执行以下代码,输出结果为()
执行以下代码,输出结果为()
promise对象的then()方法属于微任务,而setTimeout()定时器函数为宏任务。
在执行顺序处理上,js会先执行所有同步代码,然后执行微任务队列中的所有微任务,最后再继续执行宏任务。
在本题中,先执行同步代码并输出1 3 5,接着执行Promise.resolve().then()方法,输出4,由于在then()方法内删除了定时器函数,所以不会再输出2,
最终输出结果为1 3 5 4
主要注意一点异步任务中的宏任务和微任务,微任务执行顺序早于宏任务,promise属于微任务
promise 是微任务,会在当前轮事件循环结束前执行;
setTimeout 是宏任务,在下一轮事件循环执行;
所以这个 setTimeout 设置的定时器被取消掉了
同步→异步→回调
promise是异步微任务,
setTimeout是异步宏任务,
微任务比宏任务先执行,所以取消了定时器回调
__EOF__

本文作者:龙陌
本文链接:https://www.cnblogs.com/longmo666/p/17824438.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/longmo666/p/17824438.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)