对Promise逐渐认知
一
Promise 的 then 、catch、finally都会返回自身Promise的引用
console.log('then',Promise.resolve().then());
console.log('catch',Promise.resolve().catch());
console.log('finally',Promise.resolve().finally());
这一点对封装基础逻辑的ajax请求很有帮助
二
下面两种写法有啥区别
Promise.reject().then(
(res) => {},
(rej) => {
console.log("发生错误");
},
);
Promise.reject()
.then((res) => {})
.catch((rej) => {
console.log("发生错误");
});
Promise.prototype.catch方法是.then(null, rejection)或.then(undefined, rejection)的别名,用于指定发生错误时的回调函数
虽然都会输出=>发生错误,但是第二种方法还会捕获then 里面的错误
Promise.resolve().then(
(res) => {
throw new Error("抛出异常");
},
(rej) => {
console.log("发生错误");
},
);
Promise.resolve()
.then((res) => {
throw new Error("抛出异常");
})
.catch((rej) => {
console.log("发生错误");
});
结果为:
三
axios 实现了Promise 规范
race 表示 哪个结果获得的快,就返回那个结果,不管结果本身是成功状态还是失败状态。
结合一下:
Promise.race([
axios.post("/test/test/test2"),
axios.post("/test/test/test1"),
]).then((r1) => {
console.log("res", r1);
});
我之前一直以为race 表示哪个成功用哪个,开发时候没涉及到这种场景,竟然就这么过来了...
发表评论 (审核通过后显示评论):