首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
下列代码的运行输出结果是?
[单选题]
下列代码的运行输出结果是?
1 2 7 5 6 3
7 1 2 5 6 3
1 2 3 4 6 7
1 2 7 4 6 3
查看答案及解析
添加笔记
求解答(7)
邀请回答
收藏(25)
分享
纠错
1个回答
添加回答
2
没有昵称_
答案:A:
1 2 7 5 6 3
这里涉及到微观任务和宏观任务,JavaScript首先执行主线程上的所有代码,等主线程的代码都执行完了再执行异步代码。异步代码分为宏观任务(setTimeout)、微观任务(Promise),微观任务的优先级比宏观任务大,所以他们的调用顺序是 微观任务 -> 宏观任务。回到本题:
不难看出1 2 7 都是运行在主线程上,所以先输出 1 2 7 。主线程代码执行完毕后执行微观任务(promise),第一个promise应该是p,所以 输出 5,再到 first(), 输出 6。所有微观任务执行完毕,再执行宏观任务(setTimeout),最后输出 3 。而 setTimeout 中的 resolve(4) 为什么不会输出?因为每个 promise 只会执行一次 resolve 函数,之前已经执行过了,所以不会再调用这个 resolve 函数了。
编辑于 2020-09-04 16:26:03
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
C++工程师
iOS工程师
安卓工程师
运维工程师
前端工程师
算法工程师
哔哩哔哩
测试工程师
PHP工程师
安全工程师
c#工程师
数据库工程师
数据分析工程师
数据挖掘工程师
测试开发工程师
2020
大数据开发工程师
Java工程师
上传者:
小小
难度:
1条回答
25收藏
1473浏览
热门推荐
相关试题
下面描述中,符合结构化程序设计风格...
北京搜狐互联网信息服务有限公司
Java工程师
C++工程师
iOS工程师
安卓工程师
运维工程师
前端工程师
算法工程师
PHP工程师
2018
评论
(1)
消消乐
Java工程师
C++工程师
iOS工程师
安卓工程师
运维工程师
前端工程师
算法工程师
PHP工程师
测试工程师
安全工程师
c#工程师
数据库工程师
大数据开发工程师
vivo
2020
嵌入式工程师
数据挖掘工程师
测试开发工程师
评论
(21)
硬币划分
Java工程师
C++工程师
iOS工程师
安卓工程师
运维工程师
前端工程师
算法工程师
PHP工程师
测试工程师
安全工程师
c#工程师
数据库工程师
大数据开发工程师
瓜子二手车
2019
评论
(29)
下面关于 Kotlin 中异常处理...
Kotlin
评论
(1)
在Verilog中,若用如下代码实...
Verilog
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题