我试图创建一个包装函数,该函数返回一个Promise对象,该对象将在内部Promise解析后解析。基本上是这样的:
function wrapper() {
return new Promise((resolve, reject) => {
MyApi.asyncCall()
.then(data => {
// do this first, then resolve outer promise
resolve();
})
.catch(e => {
reject();
});
});
}
我需要这样做的原因是,我有一个接受诺言参数的接口,然后在诺言得到解决后触发一个动作。我需要进行异步调用,然后对响应进行处理,然后触发界面。
修改 目的说明:在解决外部承诺之前,我需要在内部承诺的响应下执行操作。该接口接受一个未解决的promise对象,然后在解析后装入组件。如果我通过内部承诺,它将在执行数据响应操作之前安装。
答案 0 :(得分:1)
基本上-您做对了。您决心\拒绝需要时的诺言。
但是您可以轻松实现-只需返回原始承诺:
Foo
因此,您返回的诺言将在MyApi.asyncCall解析或拒绝时解决或拒绝。
如果您需要在内部做一些工作,可以在以下承诺内完成:
BoundedContext
请注意,如果您需要外部数据-您必须从内部的then回调中返回它。
答案 1 :(得分:0)
您能解释一下为什么您需要包装承诺吗?
MyApi.asyncCall()
.then(data => {
// do this first, then resolve outer promise
resolve();
})
.catch(e => {
reject();
});
本身就是一个承诺,只需返回即可。
答案 2 :(得分:0)
您可以对第一个承诺使用异步等待,并在获取第一个承诺的数据后返回第二个承诺:
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');
});
}