Promise了解
Promise是一个构造函数,excutor是他的执行函数,同时也是构造函数的参数.
new Promise(excutor)
excutor有两个参数(resolve,reject)
Promise的三种状态
- pending,Promise初始化时是该状态
- fulfilled,Promise成功时是该状态,调用resolve
- rejected,Promise失败时是该状态,调用reject
Promise状态只能有pending => fulfilled/rejected, 一旦修改就不能再改变
使用方法
- promise.then(onFulfilled, onRejected)
注意: 这样使用onRejected不会捕获到onFulfilled的异常.
例如:
let promise = new Promise((resolve,reject)=>{
resolve(1)
})
promise.then((val)=>{
val.splice(0,1)
},(e)=>{
console.log("11");
})
// 错误信息
VM594:2 Uncaught (in promise) TypeError: val.splice is not a function
at <anonymous>:2:9
- promise.then(onFulfilled).catch(onRejected)
注意: 这样可以捕获onFulfilled中的异常
例如:
let promise = new Promise((resolve,reject)=>{
resolve(1)
})
promise.then((val)=>{
val.splice(0,1)
})
.catch((e)=>{
console.log("11");
})
// 输出 11
Promise.resolve
Promise.reject
Promise.all,全部为resolve才会调用
Promise.race
Promise.race,只要有一个promise对象进入 FulFilled 或者 Rejected 状态的话,就会继续进行后面的处理。