js中setTimeout与Promise执行顺序
2019-06-04 16:56
363 查看
今天在公众号上看到一段代码,刚看到的时候遇到了一些问题,下面来看一下。
setTimeout(function() { console.log(1); }) new Promise(function(resolve, reject) { console.log(2); resolve(3) }).then((res) => { console.log(res) }) console.log(4);
先上正确答案
2 4 3 1
分析原因
- 首先setTimeout会在下一轮时间循环执行,所以不会当时就打印。
- Promise对象在实例的时候其实就已经执行了内部的代码,所以2首先打印了。
- Promise.then() 在本轮事件循环结束之后执行,所以3会在4之后打印。
- 本轮事件循环结束,开始下一循环打印setTimeout中的1
相关文章推荐
- promise.then,process.nextTick, setTimeout 以及 setImmediate 的执行顺序
- setTimeout与console.log、promise.then之间执行先后顺序
- 详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
- 关于async/await、promise和setTimeout执行顺序
- promise与setTimeout的执行顺序问题
- JS是依照代码顺序执行的,而不是方法体
- JS学习笔记 – 分析 JavaScript的执行顺序
- 解决闭包问题时 setTimeout执行顺序提前的问题
- 关于js在html中执行顺序的问题
- JS的编译和执行顺序
- JS实现停留几秒sleep,Js中for循环的阻塞机制,setTimeout延迟执行
- js 程序执行与顺序实现详解
- ES6的Promise -- 逻辑执行的顺序
- js在html中的加载执行顺序
- js的装载和执行顺序
- js中的延迟执行setTimeout和定时执行setInterval
- js 程序执行与顺序实现详解
- js事件执行顺序
- Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数
- JS中控制绑定事件执行顺序