我有一个带有两个数据库调用的过程,需要按顺序进行。最后,我需要在一个单个响应中合并最后两个响应。
我正在使用平坦的承诺链接,我不知道如何返回当前和以前的承诺。
我有这样的东西:
let deferred = Q.Promise();
this.methodA('somevalue')
.then(firstResponse => {
return this.methodB(firstResponse.prop1);
}).then(secondResponse => {
return this.methodC(secondResponse.prop2);
}).then(finalResponse => {
//Here I need firstResponse and secondResponse... meaby wrapped inside finalResponse
let response = {
prop1: finalResponse.firstResponse.prop1,
prop2: finalResponse.secondResponse.prop2
};
deferred.resolve(response);
});
return deferred.promise;
ps:这在打字稿中。我删除了很多代码来做一个简单的示例。
您可以同时返回Firstresponse和methodB
的结果:
let deferred = Q.Promise();
this.methodA('somevalue')
.then(firstResponse => {
return Q.all([this.methodB(firstResponse.prop1), Q(firstResponse.prop1)];
}).then(secondResponse => {
return Q.all([this.methodC(secondResponse[0].prop2, Q(secondResponse[1])]);
}).then(finalResponse => {
//Here I need firstResponse and secondResponse... meaby wrapped inside finalResponse
let response = {
prop1: finalResponse.firstResponse.prop1,
prop2: finalResponse.secondResponse.prop2
};
deferred.resolve(response);
});
return deferred.promise;