前言
promise很多人都会用,但往往使用的时候有一些注意不到的细节问题,阮一峰大佬写的ES6入门教程其实已经很详细了,我看过很多遍,经常都会翻出来看;现在这篇博客就探讨一下文档上没有讲或者没有讲得特别清楚的地方以及容易误解的地方。
reject了也还会走到then?
then很多人在使用的时候会下意识地以为promise执行成功了resolve了之后才会走到then里面去,但很多人也都忽略了个细节,then方法接受两个参数,第一个参数是resolve之后的回调,而第二个参数则是reject之后的回调。大多数人都很少使用到第二个参数,捕获错误通常也都是使用catch,自然而然就忽略了这第二个参数。
reject了依旧会走到then的第一个回调?
上面说了,then有两个参数,第一个是resolve的回调,第二个是reject的回调;但其实即使是promise内命中的是reject的逻辑调用了reject也依然有可能走到resolve的回调里面去,看看下面这段代码
const promise1 = new Promise((resolve,reject)=>{
setTimeout(()=>{
reject('error')
},1000)