当前位置: 首页 > 面试题库 >

setTimeout和Promise的执行顺序?

杜凯
2023-03-14
本文向大家介绍setTimeout和Promise的执行顺序?相关面试题,主要包含被问及setTimeout和Promise的执行顺序?时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

首先我们来看这样一道题:

setTimeout(function() {
console.log(1)
}, 0);
new Promise(function(resolve, reject) {
console.log(2)
for (var i = 0; i < 10000; i++) {
if(i === 10) {console.log(10)}
i == 9999 && resolve();
}
console.log(3)
}).then(function() {
console.log(4)
})
console.log(5);

输出答案为2 10 3 5 4 1

要先弄清楚settimeout(fun,0)何时执行,promise何时执行,then何时执行

settimeout这种异步操作的回调,只有主线程中没有执行任何同步代码的前提下,才会执行异步回调,而settimeout(fun,0)表示立刻执行,也就是用来改变任务的执行顺序,要求浏览器尽可能快的进行回调

promise何时执行,由上图可知promise新建后立即执行,所以promise构造函数里代码同步执行的,

then方法指向的回调将在当前脚本所有同步任务执行完成后执行,

那么then为什么比settimeout执行的早呢,因为settimeout(fun,0)不是真的立即执行,

经过测试得出结论:执行顺序为:同步执行的代码-》promise.then->settimeout

 类似资料:
  • 我实现了以下promise函数,比如 cart.getbasket(req) Cart.UpdateBasket(req) Cart.UpdateDefaultShipport(req) cart.GetBasketObject(basket) 当前我执行代码时使用 我读过关于的文章,并想把它用作逻辑的流程,但当我使用时,它并不像预期的那样工作,因为我看到each的

  • 关于 promise reduce执行顺序 请高手解释下为何p1和p2为什么都是打印1,p1和p2都在runPromiseInSequence之前执行 这是我尝试修改后的代码, 看起来还是比较吃力,求大佬帮我解析一下,问了chatgpt回答的不正确

  • 问题内容: 作者:HappyLittleFish 问题答案:

  • 本文向大家介绍实例详解JavaScript中setTimeout函数的执行顺序,包括了实例详解JavaScript中setTimeout函数的执行顺序的使用技巧和注意事项,需要的朋友参考一下 前言 setTimeout,前端工程师必定会打交道的一个函数。它看上去非常的简单,朴实,有着一个很不平凡的名字--定时器。其实网上关于JavaScript中setTimeout的文章很多,但总感觉例子不够直接

  • 我试图理解Jests的异步测试。 我的模块有一个函数,它接受一个布尔值并返回一个值的承诺。executer函数调用 ,在超时回调中,promise根据最初提供的布尔值进行解析或拒绝。代码如下所示: 我想用Jest来测试一下。我想我需要使用Jest提供的模拟计时器,所以我的测试脚本看起来有点像这样: 无论是否调用 ,我都会得到以下错误/失败测试 你能解释一下我哪里出错了吗?我该怎么做才能通过考试,保

  • react 代码中有两个setTimeout,都没有写时间,用来实现等页面渲染完成后再执行,但是通过多次尝试后发现两段逻辑的执行顺序并不绝对, 我知道写在生命周期钩子中可以确保执行顺序,vue不仅可以写在钩子里,还专门提供了个$nexttack,也可以设置两个很短但不一样长的时间来实现,但我想知道现在的执行顺序为什么不绝对?不是应该是先进先出,谁先脱离线程加入任务流,最后就谁先被加载执行吗? 是因