代码是这样的:
按照老师的说法,流程是:
立即执行start、
一秒后输出 the promise fulfilled
两秒后(也就是两个定时器几乎同时排上队,第一个定时器耗时了1秒,同时的,距离第二个定时器触发还剩两秒)
输出hello world
其中,立即执行start我没有问题
问题是:
一开始我也是这个思路,我也觉得第一个定时器里,console会率先执行,输出the promise fulfilled。同时触发resolve
因为与resolve对接的then在第二个定时器中,需要再等两秒执行。
但是通过我的实验发现事情并不是这样的,
the promise fulfilled和hello world几乎是start一秒后同时打印的。
也就是说,第一个定时器触发的时候,promise.then里边的代码也触发了,没有受到第二个定时器的制约。
为了更好的观察,我故意修改两个定时器的时间差如下:
和上边一样的,这次start打印完大约三秒后,the promise fulfilled 和hello world同时打印
而不是hello world再等15000-3000秒后执行。。。
求大神讲解原理。
难道promise的then触发是,只要resolve调用了就会立即触发?
还是说什么别的原因?
你的代码写错了,第二个计时器的时间(15000秒)没放对位置。
傻蛋~
老师的代码没问题,是我抄的有问题!!!
8客气,代码手误有时候真的很难自我发现……