// 创建一个promise对象
new Promise((resolve, reject) => {
/* 业务逻辑 */
/* if (true) {
// success
resolve(success);
} else {
reject(error);
} */
}).then(
success => {
console.log('成功')
},
error => {
console.log('失败')
}
);
Promise 实例方法
在Promise实例化一个promise对象后,它只有三个方法,即 then, catch, finally。
1.then
then 方法里执行的是resolve状态
request(url).then((res) => {
// res 为resolve状态返回的数据,一般也指成功状态
})
then 方法可以链式调用,即文章开头的request方法链式then调用
request(url).then((res) => {
...
return res.data;
}).then((data) => {
// 此处的data 即为上一步then的return值:res.data
});
所以then的return值也可以是一个promise对象:
request(url, (res) => {
...
// 返回request方法调用结果:即一个promise对象
return request(res.url);
}).then((res) => {
// 此处的res 即为上一步返回方法request里的的resolve值,相当于上一步返回request调用then
...
// 继续返回一个promise对象
return request(res.url);
}).then((res) => {
})
2.catch
catch 方法里执行的是reject状态和错误处理
request(url).then((res) => {
}).catch((e) => {
// reject状态或者request方法内部错误了,都会在这里被捕获到。
});
说白了,catch方法不仅处理reject状态数据,而且还会捕获因为代码运行而产生的错误,我们就叫它错误垃圾处理箱吧。
3.finally
finally 方法即不管resolve还是reject状态都会执行的方法。
request(url).then((res) => {
}).catch((e) => {
}).finally(() => {
console.log('请求完成了');
});