一、邂逅Promise
1、【经典名句】新技术的出现都是为了什么?
- 【新技术的出现,都是为了解决原有技术的某一个痛点】
2、那么Promise在出现之前,旧的技术存在什么痛点?
-【痛点】对于异步返回结果的常见代码,没有形成统一的思想和代码风格,编写和调用都变得比较费时费力
- 旧的技术实现方案如下
function requestData(url, successCallback, failtureCallback) {
// 模拟网络请求
setTimeout(() => {
// 拿到请求结果
//url传入的是coderwhy,请求成功
if (url === "coderwhy") {
// 成功
let names = ["aaa", "bbb", "ccc"];
successCallback(names);
} else {
// 失败
let errMessage = "请求失败,url错误";
failtureCallback(errMessage);
}
}, 3000);
}
requestData(
"coderwhy",
(res) => {
console.log("拿到请求成功结果", res);
},
(err) => {
console.log("拿到请求失败结果", err);
}
);
- 比如上述代码中【successCallback】【failtureCallback】 可以放在任意位置,也可以叫任意名字,参数个数也任意;
- 调用者无法一眼洞察函数的调用方式,以及后续的返回结果
3、出现Promise之后,有什么优势?
- Promise遵守了一套严格的规范,省去了接口调用人员查阅文档的时间
- 使用者一看到返回Promise就知道如何使用该函数的,及其快速方便
4、如果给Promise执行过程划分三个阶段,是哪三个?
- 【pending】
- 【resolved】
- 【rejected】
二、Promise的对象方法 then、catch、finally(只考虑常见问题)
1、then有返回值(普通返回值)会怎么样?
image.png2、catch有返回值会怎么样?
image.png3、finally是什么效果?
image.png三、Promise的类方法
1、Promise.resolve() 用于什么场景?
image.png2、Promise.reject() 用于什么场景?
image.png3、Promise.all() 用于什么场景?
image.png4、Promise.allSettled() 用于什么场景?
image.png5、Promise.race() 用于什么场景?
image.png6、Promise.any() 用于什么场景?
image.png
网友评论