关于Promise中then方法和catch方法个人理解

诸位大佬,可否扫下右下方参与下“支付宝”红包活动!小弟万分感谢!

写在开始之前的话,本篇博客仅仅是个人的理解,如果与官方或您所理解的有误,欢迎指出!

了解Promise的想必也清楚它的两个参数:resolve和reject方法!

resolve是成功后调用的方法,那么相应的reject就是失败后调用的方法。这里关于这两个方法并不做详细介绍。

Promise中的方法就是把原来的回调写法分离出来,在异步操作执行完后,用链式调用的方式执行回调函数。 

简单使用如下:

new Promise(function (resolve, reject) {
var timer = setTimeout(function () {
resolve('这是数据1');
}, 1000);
}).then((value)=>{
console.log(value);//这是数据1
});

从上面的简单示例可以看出,then方法打印的数据是resolve反馈的数据。从这里我们是不是可以认为,then的数据来自于Promise执行成功后的反馈数据。

看到这里,我们再来看看官方中then的概述。

then 方法接收两个函数作为参数,第一个参数是 Promise 执行成功时的回调,第二个参数是 Promise 执行失败时的回调,两个函数只会有一个被调用。

从官方概述中可以知道实际上then是有两个参数的,那么如果只有一个参数时,那么代表的是成功。也就是上方的示例效果。

到这里关于then的描述也算是完整了,以下一段算是个人对then的总结。

then包含两个参数,分别为执行成功和执行失败的回调。当then只传递一个参数时,则传递的是成功的回调。简而言之,then的使用是成功失败的回调。

catch方法

catch方法等同于then中第二个参数,也就是说当执行失败是会执行到catch中。

注意点:如果没有使用catch方法指定处理错误的回调函数,Promise对象抛出的错误不会传递到外层代码,即不会有任何反应(Chrome会抛错)。