我知道异步回调函数将被推入回调队列。例如:
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')
});