javascript - Promise.all 返回空数组
问题描述
我有一系列请求,我正在尝试运行Promise.all
,但我没有得到任何回报Promise.all.then()
,不知道为什么......
productIdArray.forEach(id => {
requests.push(rp('https://******br' + '/****/v2/api/*****/' + parametersString + pessoaId + '&idProduto=' + id));
});
Promise.all(requests)
.then((resultados) => resultados.forEach(resultado => {
console.log(resultados)
if (resultado) {
accounts.push({
'idProduto': JSON.parse(resultado).content.idProduto,
'contas': JSON.parse(resultado).content
});
}
})).catch(err => console.log(err));
return accounts;
我错过了什么吗?RP 是请求承诺库
解决方案
您需要从外部函数返回一个 Promise。一旦你的函数的一部分是异步的,整个函数就是异步的。
像这样的东西应该可以解决问题(替换forEach
w/ map
)
// using map to create an array of pending requests
const requests = productIdArray.map(id => rp('https://******br' + '/****/v2/api/*****/' + parametersString + pessoaId + '&idProduto=' + id));
// returning a promise
return Promise.all(requests)
.then(resultados => resultados.map(resultado => ({
'idProduto': JSON.parse(resultado).content.idProduto,
'contas': JSON.parse(resultado).content
})).catch(err => console.log(err));
推荐阅读
- haskell - Haskell环境中的重复包?
- cordova - “Location”类型的参数不能分配给“BackgroundGeoLocationEvents”类型的参数
- css - 我的 calc() 使用 vw 和整数的组合来计算字体大小没有解决
- google-sheets - 添加行时如何更新 Google 表格中的公式范围?
- qt - 如何使用windeploy qt部署dll?
- python - 在 Dash Tables Python 中调整表格的 MaxHeight
- javascript - 如何从 jQuery 中的兄弟 div 元素中检索一些文本
- python - 在张量流中使用保存的估计器时,saved_model_cli 的问题
- javascript - URL 的 Dropzone 错误阻止图像上传
- r - 为每个因子 R 创建“1 - 行数”的数组