希望在promise中return结果
测试1
function fun() {
return new Promise((resolve, reject) => {
resolve('模拟axios')
})
}
function test() {
return fun().then(res => {
console.log('1,',res)
return 1
}).then(res => {
console.log('2,',res)
return 2
}).then(res => {
console.log('3,',res)
return 3
}).catch(err=>{
console.log('#err',err)
})
}
运行一下test方法,每一步 return 一个值,显而易见,收到的参数都是上一步的结果
获得方法运行的结果
let result = test()
最终抛出结果,要在result之后再做一步
result.then(r=>{
console.log("r",r)})
得到抛出结果
测试2
function p1() {
return new Promise((resolve, reject) => {
resolve('p1')
})
}
function p2() {
return new Promise((resolve, reject) => {
resolve('p2')
})
}
function run() {
return p1().then(d => {
console.log('1,',d)
return 1
}).then(d => {
console.log('2,',d)
return p2().then(d => {
console.log('#t,',d)
throw(9)
})
}).then(d => {
console.log('3,',d)
}).catch(err=>{
console.log('#err',err)
})
}
run运行结果
运行到catch抛出异常
let r = run()
没有return了,r的promiseResult为undefined
测试3
把测试2 中的异常抛出关掉
function p1() {
return new Promise((resolve, reject) => {
resolve('p1')
})
}
function p2() {
return new Promise((resolve, reject) => {
resolve('p2')
})
}
function run() {
return p1().then(d => {
console.log('1,',d)
return 1
}).then(d => {
console.log('2,',d)
return p2().then(d => {
console.log('#t,',d)
return d
})
}).then(d => {
console.log('3,',d)
return '最后一步中必须有return'
}).catch(err=>{
console.log('#err',err)
})
}
运行结果