在Twitter上看到这样一篇关于Promise的推文,看到后我觉得十分有趣,说实话,第三题我也想错了。。。
很多人都说自己精通Promise,但其实只是浮于表面,并没有真正理解Promise的精髓。
知识回顾
Promise.then()方法接受两个参数,这两个参数的类型必须是函数,在第一个参数函数内,你只可以做下面三件事:
回顾上面这个重要的知识点,会有助于你理解上面题目的运行机制。
揭晓答案
Q1
这是一个很正常的语法,无需过多解释
运行顺序如下:
Q2
这里和第一问相比,缺少了重要的返回值,那么JS会默认返回undefined。而如果返回undefined这个同步值的话,这个then所代表的Promise会立即决议为undefined,并开始下一个then的运行。
所以这两个then几乎是同时运行的。
运行顺序如下:
Q3
这道题确实有些意外,then只接受function类型的参数,而此处传入的并非function类型,所以为会认为传入了一个null,其结果和.then(null)是一样的。这样会导致前一个promise会穿透到下面。
运行顺序如下:
Q4
这道题其实和第一个是相同的,运行顺序自然也是一致的,所以也无需过多解释了。
运行顺序如下: