Promise
Promise
es6中引入的异步编程解决方案,语法上Promise是个构造函数
const p = new Promise((resolve,reject)=>{
// resolve 解决(成功)
// reject 拒绝(失败)
})
then
promise对象 都有then方法
resolve(参数) 触发then( )方法中的 第一个回调函数
reject(参数) 触发then( )方法中的 第二个回调函数
p.then(function(value){
// value是resolve传递过来的参数
},function(reason){
// reason是reject传递过来的参数
})
then返回值
p.then( ) 返回一个promise对象
const p = new Promise((resolve,reject)=>{
// resolve 解决(成功)
// reject 拒绝(失败)
})
const result = p.then(value => {
// 第一个回调
},reason => {
// 第二个回调
})
/*
result -> {
PromiseState:状态 fulfilled(成功) rejected(失败)
PromiseResult:结果
}
*/
如果p的状态为成功,则调用then方法中第一个回调函数。
如果p的状态为失败,则调用then方法中第二个回调函数。
p.then()返回的promise状态由回调函数 (value/reason) 执行结果决定:
1. 没有return 默认 return undefined
状态: fulfilled ----- 结果: undefined
2. return '123' (非promise类型数据)
状态: fulfilled ----- 结果: '123'
3. return new Promise( ) (promise类型数据)
如果promise对象 resolve(参数) --> 状态: fulfilled ----- 结果: 参数
如果promise对象 reject(参数) --> 状态: rejected ----- 结果: 参数
4. throw 抛 错
状态: rejected ----- 结果: 抛出内容
链式调用
由于then( )方法返回一个promise对象,而promise对象都有then( )方法,所以可以 链式调用
p.then(value=>{
},reason=>{
}).then(value=>{
},reason=>{
})
catch
p.catch(reason=>{
// 只有一个回调函数
})
捕获失败的promise 也就是 状态为rejected的promise对象
p.then( )有两个回调函数 成功 和 失败
p.catch( )只有一个回调函数 失败
本文来自博客园,作者:ycccc丶,转载请注明原文链接:https://www.cnblogs.com/imycc/p/16484490.html