-
Promise
是异步编程的一种解决方案,它相当于一个容器,里面保存着未来才会结束的事件,它也主要是用来解决回调地狱的问题。
-
promise
是一个对象,代表一个异步操作,有三种状态,进行中,成功,失败。只有异步操作的结果的可以决定当前是哪种状态,promise
一旦新建执行,就没有办法中途停止。
-
promise
允许函数作为参数传入,res
为成功的回调,rej
为失败的回调,当条件满足时,res/rej
会将成功或失败的结果暴露出来。
- 通过
.then
拿到暴露出来的结果,.then
是一个全新的promise
函数,.then
允许两个函数作为参数,一个函数拿到成功的暴露结果,一个拿失败暴露的结果。
- 通过
catch
获取一个指定发生错误时的回调函数。error
为错误信息。
- 一般来说,不要在
then
方法里面定义 rej
状态的回调函数(即then的第二个参数),总是使用catch
方法。
const pro=new Promise((res,rej)=>{
if(!true){
res('123')
}
else{
rej("4576")
}
}).then((res)=>{
console.log(res)
},(rej)=>{
console.log(rej)
}).catch((error)=>{
console.log(error)
}
)
-
Promise.all
方法用于将多个Promise
实例,包装成一个新的Promise
实例。只有当作为参数所有的promise
函数运行完毕,才会执行.then
回调。
- 如果作为参数的 Promise 实例,自己定义了catch方法,那么它一旦被出错,并不会触发Promise.all()的catch方法。
const promises = [2, 3, 5, 7, 11, 13].map(function (id) {
return getJSON('/post/' + id + ".json");
});
Promise.all(promises).then(function (posts) {
// ...
}).catch(function(reason){
// ...
});
- Promise.race()法用于将多个
Promise
实例,包装成一个新的Promise
实例。只有当作为参数所有的promise
函数有一个运行完毕,就会执行.then
回调。
const promises = [2, 3, 5, 7, 11, 13].map(function (id) {
return getJSON('/post/' + id + ".json");
});
Promise.race(promises).then(function (posts) {
// ...
}).catch(function(reason){
// ...
});