前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >看到这题后还敢说自己精通Promise吗?

看到这题后还敢说自己精通Promise吗?

作者头像
用户1687375
发布2018-06-08 12:08:01
4420
发布2018-06-08 12:08:01
举报
文章被收录于专栏:较真的前端

在Twitter上看到这样一篇关于Promise的推文,看到后我觉得十分有趣,说实话,第三题我也想错了。。。

很多人都说自己精通Promise,但其实只是浮于表面,并没有真正理解Promise的精髓。

知识回顾

Promise.then()方法接受两个参数,这两个参数的类型必须是函数,在第一个参数函数内,你只可以做下面三件事:

  1. return另一个Promise
  2. return一个同步值(包括undefined)
  3. throw一个异常

回顾上面这个重要的知识点,会有助于你理解上面题目的运行机制。

揭晓答案

Q1

这是一个很正常的语法,无需过多解释

运行顺序如下:

Q2

这里和第一问相比,缺少了重要的返回值,那么JS会默认返回undefined。而如果返回undefined这个同步值的话,这个then所代表的Promise会立即决议为undefined,并开始下一个then的运行。

所以这两个then几乎是同时运行的。

运行顺序如下:

Q3

这道题确实有些意外,then只接受function类型的参数,而此处传入的并非function类型,所以为会认为传入了一个null,其结果和.then(null)是一样的。这样会导致前一个promise会穿透到下面。

运行顺序如下:

Q4

这道题其实和第一个是相同的,运行顺序自然也是一致的,所以也无需过多解释了。

运行顺序如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-09-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 较真的前端 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档