我有2个函数getAccountInfo()和getAdjustmentsInfo(accountInfo),它们都返回一个新的Promise。唯一的不同是第二个功能需要第一个功能返回的信息。
我试图先声明这2个函数,然后使用then()逐个调用它们。它起作用了,但问题是,第二个功能需要第一个承诺的结果。
不仅如此,第一个承诺还返回了一个数组,例如一个包含10个帐户信息的数组。但是第二个功能只需要帐户信息的属性,例如account_code。
所以我认为我需要运行第二个功能10次。我不太确定该怎么做。
这些是函数,如您所见,第二个函数需要第一个accountInfo对象的account_code:
DerivedUnit
这是调用函数的控制器代码:
function getAccountInfo() {
return new Promise((resolve, reject) => {
getAccountCallbackFunc((errResponse, response) => {
if (errResponse) {
return reject(errResponse);
}
resolve(response);
});
});
}
function getAdjustmentsInfo(accountInfo) {
return new Promise((resolve, reject) => {
getAdjustmentCallbackFunc(accountInfo[0].account_code, function (errResponse, response) {
if (errResponse) {
reject(errResponse);
}
if (response) {
resolve(response);
}
});
});
}
我将第二个函数更改为如下所示,下面是我更改为的代码,因此它可以循环:
var accountInfo = {};
var adjustmentsInfo = {};
getAccountInfo()
.then(response => {
accountInfo = response.data.accounts.account;
getAdjustmentsInfo(accountInfo)
})
.then(response => {
adjustmentsInfo = response.data.adjustments;
})
.catch(err => console.log(err));
因此,我首先运行getAccountInfo()函数,然后首先运行then(),以将帐户信息保存到外部变量accountInfo。 接下来,我运行第二个then()试图将accountInfo传递给第二个函数,第二个函数将循环运行内部getAdjustmentCallbackFunc()多次以创建新结果并对其进行解析。我不知道为什么它不起作用。那是我所缺少的吗?请让我知道。
答案 0 :(得分:1)
getAccountInfo()
.then(info => {
return Promise.all(info.accounts.map(a => getAdjustmentsInfo(a)));
})
.then(adjustments => {
// array of 10 adjustments
})