马小看前端( 关于promise的那些往事)(下)
今天我们来认识一下通过上个章节没有说完的promise
根据上面的马小的博客大家也应该是对这个promise的对象有一个清楚的认识和promise的强大之处,因为上回还有项目进度需要去赶工完成所以大家懂的
那么从上回来开始,我们去说饿了promise中方法then的强大之处(下面来了解一个catch的方法)
promise的方法已经上面了解的差不多了,then和catch都会返回一个新的Promise,既然我们已经了解这俩种方法,那么现在相信大家都有了一种感叹,确实是强大啊,那么catch这么用呢具体用到哪里呢,catch是捕获的意思不管被连接到哪里,都能捕获上层未捕获的错误
下面我们来看代码理解一下
const promise = new Promise((resolve, reject) => {
reject("error");
resolve("success2");
});
promise
.then(res => {
console.log("then1: ", res);
}).then(res => {
console.log("then2: ", res);
}).catch(err => {
console.log("catch: ", err);
}).then(res => {
console.log("then3: ", res);
})
- promise其实就是一个霸道总裁,在promise中返回一个非promise的值都会被它包裹成一个promise的对象,例如 return 3 会被包裹成return Promise.resolve(3)
- .catch方法在内部也是调用的Promise.prototype.then方法中的reject状态下的方法,也就是calling
- 它返回了一个失败的promise,
以及返回一个参数作为一个失败理由。值得注意的是这里返回的是一个已定型的promise,这个过程是promise从pending到reject的改变过程。
以上就先到这里因为时间紧张抽个空,好好给你们说说原理,来自三年马小程序员的博客,感谢关注!!