同步回调时的回调队列



我知道异步回调函数将被推入回调队列。例如:

setTimeout(function() {
console.log('Async');
}, 0);

在上述情况下,回调函数被推入回调队列。

同步回调函数是否也会被推送到回调队列中?

function a(b)
{
console.log('First function')
}
a(function b()
{
console.log('Sync Callback')
});
函数b也会被推入回调队列吗?

函数b也会被推送到回调队列中吗?

简短回答:不。

稍微长一点的答案:在第二个代码段中,您将函数b作为参数传递给函数a,这是同步发生的。但是,您从未在函数a中使用函数b,因此,虽然函数a将进行求值,但函数b既不会被放入队列中,也不会进行求值。

如果你想对b进行紧急评估,你需要在a:内部调用它

function a(arg_b) {
arg_b();
console.log('First function')
}
a(function b() {
console.log('Sync Callback')
});

如果您希望将b放入队列中,并在稍后进行评估,则需要创建一个任务(或微任务(:

function a(arg_b) {
setTimeout(arg_b, 0);
console.log('First function')
}
a(function b() {
console.log('Sync Callback')
});

最新更新