现有3个异步请求A,B,C,A的返回是B的参数,B的返回是C的参数,用Promise怎么控制A,B,C的请求顺序?我现在是这样写的,有没有更好的方式?
(补充下,这样的写法还没有考虑到某个请求reject的情况,如果考虑reject要怎么写能稍显优雅呢?)
this.A().then(res=>{
this.B(res).then(res=>{
this.C(res);
})
})
现有3个异步请求A,B,C,A的返回是B的参数,B的返回是C的参数,用Promise怎么控制A,B,C的请求顺序?我现在是这样写的,有没有更好的方式?
(补充下,这样的写法还没有考虑到某个请求reject的情况,如果考虑reject要怎么写能稍显优雅呢?)
this.A().then(res=>{
this.B(res).then(res=>{
this.C(res);
})
})
换汤不换药,但是更符合Promise的写法
this.A().then(res=>{
return this.B(res)
}).then(res=>{
return this.C(res);
})
考不考虑基于Promise的async await?
async function requestChain() {
try {
const resA = await this.A();
const resB = await this.B(resA);
await this.C(resB)
} catch(err) {
// 处理reject
}
}
async function C() {
try {
const result = await B()
resolve(result)
} catch (e) {
console.log(e)
}
}
async function B() {
return new Promise(resolve, reject) {
try {
const result = await A()
resolve(result)
} catch (e) {
console.log(e)
}
}
}
function A() {
return new Promise(resolve, reject) {
xxx
}
}
13 回答13.1k 阅读
8 回答3k 阅读
2 回答5.3k 阅读✓ 已解决
5 回答1.5k 阅读
3 回答1.4k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
5 回答1.8k 阅读✓ 已解决
层层依赖
promise
也避免不了这种回调的链式调用;你可以使用async await
,如: