参考回答:
首先我们来看这样一道题:
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 问题答案:
打印2的位置 怎么解释呢
本文向大家介绍实例详解JavaScript中setTimeout函数的执行顺序,包括了实例详解JavaScript中setTimeout函数的执行顺序的使用技巧和注意事项,需要的朋友参考一下 前言 setTimeout,前端工程师必定会打交道的一个函数。它看上去非常的简单,朴实,有着一个很不平凡的名字--定时器。其实网上关于JavaScript中setTimeout的文章很多,但总感觉例子不够直接
我试图理解Jests的异步测试。 我的模块有一个函数,它接受一个布尔值并返回一个值的承诺。executer函数调用 ,在超时回调中,promise根据最初提供的布尔值进行解析或拒绝。代码如下所示: 我想用Jest来测试一下。我想我需要使用Jest提供的模拟计时器,所以我的测试脚本看起来有点像这样: 无论是否调用 ,我都会得到以下错误/失败测试 你能解释一下我哪里出错了吗?我该怎么做才能通过考试,保