我知道异步回调函数将被推入回调队列。例如:
setTimeout(function() {
console.log('Async');
}, 0);
在上述情况下,回调函数被推入回调队列。
同步回调函数也会被推入回调队列吗?
function a(b)
{
console.log('First function')
}
a(function b()
{
console.log('Sync Callback')
});函数b也会被推入回调队列吗?
发布于 2021-01-04 10:50:14
函数
b也会被推送到回调队列上吗?
简短回答:不。
稍长一点的答案:在您的第二个片段中,您将函数b作为参数传递给函数a,这是同步发生的。但是,在函数b中永远不会使用函数a,因此,虽然函数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')
});
https://stackoverflow.com/questions/65561052
复制相似问题