不好意思,如果这是非常基本的,但我想知道我是否真的理解如何使用回调创建非阻塞函数。
基本示例:
JS
MyFunc('value',function(data) {
$('body').append(data);
});
function MyFunc(value, callback)
{
$.post('Fetch.php', {param1: value}, function(data, textStatus, xhr) {
data = JSON.parse(data);
callback(data);
});
}
PHP(Fetch.php)
echo json_encode($_POST['param1']);
这会分类为使用回调构建函数的适当方法吗?有没有更好的方法呢?
答案 0 :(得分:1)
您正在做的是使用回调的正确方法。唯一的问题是jQuery可能会为您解析响应,因此您甚至可以将代码缩短为
function MyFunc(value, callback) {
$.post('Fetch.php', {param1: value}, callback);
}
有更好的方法吗?
另一种方法(更灵活,更强大)是从函数中返回promise对象:
function MyFunc(value) {
return $.post('Fetch.php', {param1: value});
}
MyFunc('value').then(function(data) {
$('body').append(data);
});
答案 1 :(得分:0)
jQuery代码同步运行(阻塞),直到HTML5在JS中没有多线程支持。 javascript本身虽然不会阻止UI。我相信WIP库的某些方法可能会利用网络工作者(异步),但我不确定。