什么是promise:异步编程代码的一种方式
let p = new Promise((resolve, reject) => {
// 作一些事情
// 而后在某些条件下resolve,或者reject
if (/* 条件随便写^_^ */) {
resolve()
} else {
reject()
}
})
p.then(() => {
// 若是p的状态被resolve了,就进入这里
}, () => {
// 若是p的状态被reject
})
调用.then能够为实例p注册两种状态回调函数
当实例p的状态为fulfilled,会触发第一个函数执行
当实例p的状态为rejected,则触发第二个函数执行
promise的做用:
如今假设有多个异步任务,且任务间有依赖关系(一个任务须要拿到另外一个任务成功后的结果才能开始执行)的时候,回调的方式写出来的代码就会像下面这样:
getData1(data1 => {
getData2(data1, data2 => {
getData3(data2, data3 => {
getData4(data3, data4 => {
getData5(data4, data5 => {
// 终于取到data5了
})
})
})
})
})
promise改写一下:
getData1()
.then(getData2)
.then(getData3)
.then(getData4)
.then(getData5)
.then(data => {
// 取到最终data了
})
3种状态:
promise实例有三种状态:
pending(待定)
fulfilled(已执行)
rejected(已拒绝)
promise的内容分为构造函数、实例方法和静态方法
1个构造函数: new Promise
2个实例方法:.then 和 .catch
4个静态方法:Promise.all、Promise.race、Promise.resolve和Promise.reject
复制代码