我想运行一个函数,即'callbackfnsetTimeout如果我在我的全局执行上下文中运行它,那么只有当内的代码callbackfnsetTimeout函数将运行,因为它将进入回调队列,并将保持等待,直到在全局执行上下文中的行。
但是我想要的是执行callbackfn在setTimeout被执行之后。为此,我必须pushcallbackfn在回调队列中。那么,我们如何显式地将它推入回调队列呢?
简短的回答是,如果没有setTimeout之类的东西,就不能将函数直接推到队列中。要理解为什么你应该知道
- setTimeout是一个web API的特性,它需要你的ref函数,计时器完成后,它将函数推入callback队列
- 事件循环不会从回调队列中取出任何函数到调用堆栈,直到所有同步代码执行完毕首先检查微任务队列
- 最后,如果在调用堆栈和微任务队列中没有任何等待函数(来自承诺和突变观察者的排队函数),它开始检查回调队列
- 您可以查看此博客了解更多信息
- 如果你是一个视频人,检查这个