3 回答

TA贡献2016条经验 获得超9个赞
基本上——你做对了。当你需要时,你会解决\拒绝承诺。
但是你可以很容易地做到这一点——只需返回原始承诺:
function wrapper() {
return MyApi.asyncCall()
}
所以你返回的承诺,当 MyApi.asyncCall 解决或拒绝时解决或拒绝。
如果你需要在内部做一些工作人员,你可以在这个承诺中做:
function wrapper() {
return MyApi.asyncCall()
.then((data) => {
doSomeOtherStaff(data)
return data
})
}
请注意,如果您需要外部数据 - 您必须从内部的 then 回调中返回它。

TA贡献1874条经验 获得超12个赞
你能解释一下为什么你需要包装承诺吗?
MyApi.asyncCall()
.then(data => {
// do this first, then resolve outer promise
resolve();
})
.catch(e => {
reject();
});
本身就是一个承诺,只需返回它就足够了。

TA贡献1856条经验 获得超17个赞
您可以将 async await 用于第一个承诺,并在获取第一个承诺的数据后返回第二个承诺:
function wrapper(){
return new Promise( async (resolve,reject)=>{
let myFirstPromise = await firestPromise();
// do your stuff here
console.log(myFirstPromise)
return resolve('Second Promise');
});
}
function firestPromise(){
return new Promise( (resolve,reject)=>{
return resolve('First Promise');
});
}
添加回答
举报