对于非阻塞代码,这是像 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);
});
对不起,如果这是非常基础的,但我想知道我是否真的了解如何创建带回调的非阻塞函数。
基本示例:
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);
});