一、promise有三种状态
1、pending 准备阶段
2、resolve 成功状态
3、reject 失败状态
new Promise((resolve, reject)=>{
// 当没有返 resolve 或 reject 时, 是 pending 状态
})
new Promise((resolve, reject)=>{
resolve();
reject();
// promise状态一旦变更, 就不会更改, 所以只执行第一个成功的调用
})
二、then对于promise的返回结果进行处理
格式:
new Promise((resolve,reject)=>{
resove();
}).then(data=>{
// 执行resolve()走这个处理分支
},err=>{
// 执行reject()走这个处理分支
})
1、then中只写成功的方法
new Promise((resolve, reject)=>{
resolve()
}).then(()=>{
console.log('success')
})
2、then中只写拒绝的方法
new Promise((resolve, reject)=>{
reject()
}).then(null, (err)=>{
console.log('err', err)
})
3、第一个then未对状态改变处理数据则向后处理
new Promise((resolve, reject)=>{
reject()
}).then().then(null, ()=>{
console.log('第二个then处理reject')
})
4、promise resolve 第一个then处理了状态
new Promise((resolve,reject)=>{
resolve()
}).then(()=>{
console.log('第一个then处理成功')
},err=>{
console.log('第一个then处理 err')
}).then(()=>{
console.log('第二个then处理成功')
},err=>{
console.log('第二个then处理 err')
})
// 第一个then处理成功
// 第二个then处理成功
5、第一个then对状态改变处理了 promise reject
new Promise((resolve,reject)=>{
reject()
}).then(()=>{
console.log('第一个then处理成功')
},err=>{
console.log('第一个then处理 err')
}).then(()=>{
console.log('第二个then处理成功')
},err=>{
console.log('第二个then处理 err')
})
// 第一个then处理 err
// 第二个then处理成功
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。