javascript - 推送到承诺内的上层范围数组
问题描述
我需要推送到位于forEach
循环范围内的数组。在每一个中,它都会调用一个带有值的 Promise,并将结果推送到数组中。
function getSquareOfEvenNumber(num) {
return new Promise((resolve, reject) =>{
if (num % 2 !== 0 ) reject('Please pass a even number only!');
resolve(num * num);
})
}
const getResult = (a) => {
let resultants = [6];
let totalErrors = 0;
a.forEach(async (e) => {
try {
const d = await getSquareOfEvenNumber(e)
resultants.push(d)
} catch(err) {
totalErrors++;
}
})
return {
resultants,
totalErrors,
resultantCount: resultants.length
};
}
另外,我在下面尝试过。
a.forEach(async (e) => {
getSquareOfEvenNumber(e)
.then((d) => resultants.push(d))
.catch((err) => resultants++)
})
另外,尝试使用for...of
循环。
for (e of a) {
getSquareOfEvenNumber(e)
.then((d) => resultants.push(d))
.catch((err) => resultants++)
}
But
它也不起作用,我正在获取上变量的初始值。它们没有在循环中被修改。
{ resultants: [ 6 ], totalErrors: 0, resultantCount: 1 }
请有人解释为什么会发生这种情况以及是否有任何解决方法。
解决方案
推荐阅读
- c - 添加到 typedef 结构内元素的索引
- python - 在 Python 中删除 CSV 的整个价格列中的最后 2 位数字,或者在最后两位数字之前添加一个小数?
- flutter - VSCode 上突出显示的错误
- python - 将 pandas 数据帧从 tsv 转换为 parquet
- python-3.x - 没有秒的Python格式本地化日期时间?
- sql-server - SQL Server 存储过程从链接服务器插入表并使用最大 ID 更新另一个表
- python - 在远程机器上运行测试并使用 pytest 捕获输出
- docker - 如何在 powershell 跨平台中捕获 docker 版本
- c# - Api 调用返回异常
- axios - Firebase Cloud Functions - 一次为多个用户提供服务