为了账号安全,请及时绑定邮箱和手机立即绑定

老师的这段代码讲的有问题吧??第二个定时器并没有按时再去执行

代码是这样的:

https://img1.sycdn.imooc.com//5bbdc64c0001798304990347.jpg

按照老师的说法,流程是:

立即执行start、

一秒后输出 the promise fulfilled

两秒后(也就是两个定时器几乎同时排上队,第一个定时器耗时了1秒,同时的,距离第二个定时器触发还剩两秒)

输出hello world

其中,立即执行start我没有问题

问题是:

一开始我也是这个思路,我也觉得第一个定时器里,console会率先执行,输出the promise fulfilled。同时触发resolve

因为与resolve对接的then在第二个定时器中,需要再等两秒执行。

但是通过我的实验发现事情并不是这样的,

the promise fulfilled和hello world几乎是start一秒后同时打印的。

也就是说,第一个定时器触发的时候,promise.then里边的代码也触发了,没有受到第二个定时器的制约。

为了更好的观察,我故意修改两个定时器的时间差如下:

https://img1.sycdn.imooc.com//5bbdc75b0001b84e05430348.jpg

和上边一样的,这次start打印完大约三秒后,the promise fulfilled 和hello world同时打印

而不是hello world再等15000-3000秒后执行。。。


求大神讲解原理。

难道promise的then触发是,只要resolve调用了就会立即触发?

还是说什么别的原因?

正在回答

4 回答

你的代码写错了,第二个计时器的时间(15000秒)没放对位置。https://img1.sycdn.imooc.com//5bbeacf200012a0709020676.jpg

1 回复 有任何疑惑可以回复我~
#1

xing_org1 提问者

哇,还真是哎,感谢提醒。自己竟然没发现。辛亏贴出来了,要不然自己要意淫出一个错误的知识点了
2018-10-11 回复 有任何疑惑可以回复我~

傻蛋~

0 回复 有任何疑惑可以回复我~

老师的代码没问题,是我抄的有问题!!!

0 回复 有任何疑惑可以回复我~

8客气,代码手误有时候真的很难自我发现……

0 回复 有任何疑惑可以回复我~
#1

xing_org1 提问者

[捂脸]
2018-10-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

老师的这段代码讲的有问题吧??第二个定时器并没有按时再去执行

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信