首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >同步回调情况下的回调队列

同步回调情况下的回调队列
EN

Stack Overflow用户
提问于 2021-01-04 10:25:33
回答 1查看 143关注 0票数 0

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

代码语言:javascript
运行
复制
setTimeout(function() {
   console.log('Async');
}, 0);

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

同步回调函数也会被推入回调队列吗?

代码语言:javascript
运行
复制
function a(b)
{
 console.log('First function')
}

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

函数b也会被推入回调队列吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-04 10:50:14

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

简短回答:不。

稍长一点的答案:在您的第二个片段中,您将函数b作为参数传递给函数a,这是同步发生的。但是,在函数b中永远不会使用函数a,因此,虽然函数a将进行计算,但函数b既不会放在队列中,也不会被计算。

如果您希望对b进行灵活的评估,则需要在a中调用它

代码语言:javascript
运行
复制
function a(arg_b) {
  arg_b();
  console.log('First function')
}

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

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

代码语言:javascript
运行
复制
function a(arg_b) {
  setTimeout(arg_b, 0);
  console.log('First function')
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65561052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档