这是否像jQuery那样为非阻塞代码进行回调的正确方法?

时间:2015-08-22 16:04:44

标签: javascript php jquery callback

不好意思,如果这是非常基本的,但我想知道我是否真的理解如何使用回调创建非阻塞函数。

基本示例:

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']);

这会分类为使用回调构建函数的适当方法吗?有没有更好的方法呢?

2 个答案:

答案 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库的某些方法可能会利用网络工作者(异步),但我不确定。