如何保留Q的承诺链接的反应



我有一个带有两个数据库调用的过程,需要按顺序进行。最后,我需要在一个单个响应中合并最后两个响应。

我正在使用平坦的承诺链接,我不知道如何返回当前和以前的承诺。

我有这样的东西:

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;

相关内容

  • 没有找到相关文章

最新更新