1. 为什么要写这篇文章
有这么几个目的:
- 前端笔/面试必考题,面试官太爱问这个了;
- 的确不是一个好理解的概念。俗话说“好记性不如烂笔头”,网上关于Promise的博客、教程已经满天飞了,不过其中的知识它也只能是别人的,而非自己的;
- 工作会用到它,写了博客加深理解。
这篇文章在我的草稿箱里躺了将近三个月,今天捞起来写完。原题目为Promise学习笔记,现在改为Promise速通笔记,一是为了力求以短平快的方式说明白事情,二是为了记录自己在学习与理解Promise中的大石头,顺便帮大家搬掉石头。
2. Promise三个状态
pendingfulfilledrejected
3. 万物皆可console.log()
以前学Python的时候,不会用IDE单步调试时就用print()大法。换到JavaScript的时候就是console.log()大法。
对Promise三态变化进行console.log()大法后的结果如下:
3.1 pending
3.2 fulfilled
此时便可以进行.then()函数的回调了。
3.3 rejected
从上图可以看出,reject回调被执行后不仅状态会变为{<rejected> : 'Yuebing'},而且会报错。
在reject状态发生后,便可以进行catch()回调。