关于JS中Promise的问题
这里是我的程序。
function asyncFunction() {
return new Promise(function (resolve, reject) {
setTimeout(function () {
resolve('Async Hello world');
}, 0);
});
}
asyncFunction().then(function (value) {
console.log(value);
}).catch(function (error) {
console.log(error);
});
setTimeout(function() {
console.log('1----->');
}, 0);
请教一下大家,第二行中的Promise的对象函数是什么时候执行的。下面是运行结果
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
应该有歧义 ,但是我也不知道怎么标 ,大可以这么理解 ,就是跟回调函数的深度层次有关系
Promise then在事件循环结束后调用,而settimerout在下一轮事件循环调用。
按照题主的代码,首先把settimeout放入消息队列,等待下一轮事件循环开始后调用,而Promise内还调用了settimeout,所以这里也放入消息队列,先后顺序就是这样。
两个 setTimeout 都在本轮 event loop 中执行,在下轮 event loop 时执行回调。
执行回调时上方在 asyncFunction 中的 resolve 会将结果压进 Jobs 队列中,在该轮 event loop 之后,下轮 event loop 之前执行 asyncFunction().then 中的第一个参数 onFullfilled。
下方的回调则直接打印,所以先显示。
为什么我谷歌是先打印引文 后打印1-----》