对于非阻塞代码,这是像 jQuery 这样进行回调的正确方法吗?

Is this the correct way of making a callback like jQuery does it for non-blocking code?

对不起,如果这是非常基础的,但我想知道我是否真的了解如何创建带回调的非阻塞函数。

基本示例:

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

这是否属于构造回调函数的合适方法?有更好的方法吗?

jQuery 代码同步运行(阻塞)直到 HTML5 JS 不支持多线程。 javascript 本身虽然不会阻止 UI。我相信 WIP 库的某些方法可能会利用网络工作者(异步),但我不确定。

您所做的是使用回调的正确方法。唯一的问题是 jQuery 可能会为您解析响应,因此您甚至可以将代码缩短为

function MyFunc(value, callback) {
    $.post('Fetch.php', {param1: value}, callback);
}

Is there a better way to do it?

另一种方法(更灵活、更强大)是 return 从你的函数中承诺对象:

function MyFunc(value) {
    return $.post('Fetch.php', {param1: value});
}

MyFunc('value').then(function(data) {
    $('body').append(data);
});