javascript - 基于异步代码循环遍历数组和更新变量
问题描述
我试图遍历一个数组并调用一个promise,并根据该结果更新变量。代码按我的意愿工作,但我担心这是否是编写它的好方法。有没有更好的方法?先感谢您。
/**
*
* u/returns Resolves a promise and returns value 'b'
*/
async function generatePromise() {
return Promise.resolve('b');
}
async function main() {
let showWarning = false;
// List of users
const users = ['a', 'b', 'c'];
//Looping through users array and compare the result from promise and update showWarning boolean
await users.reduce(async (promise, user) => {
await promise;
const result = await generatePromise();
if (result === user) showWarning = true;
}, Promise.resolve())
console.log(showWarning)
}
main();
解决方案
似乎不必要的复杂,逻辑有些倒退。假设它generatePromise
总是返回相同的响应,你为什么要多次调用它?调用一次并检查该值是否包含在数组中:
const showWarning = users.includes(await generatePromise());
如果需要多次调用该函数(例如,因为它可能会为每个输入/用户返回不同的响应),那么您可以使用一个简单的for
循环:
for (const user of users) {
if (user === await generatePromise()) {
showWarning = true;
break; // why check other users if `showWarning` won't change anymore?
}
}
推荐阅读
- python - 读取 CSV 文件并使用 pandas 编写函数
- javascript - 谷歌地图参考错误:谷歌未定义 - jQuery Mobile
- flutter - 从列表导航到联系人
- javascript - 如何在 vue 组件中添加到购物车后自动添加通知?
- azure - Azure 服务主体权限不足,无法管理其他服务主体
- ios - Sendbird 未收到推送通知
- sql - SQL根据条件查找两行之间的平均时间差
- deep-learning - PyTorch 等深度学习框架在使用多个 GPU 时如何处理内存?
- django - Django:将字符串字节字符串恢复为原始字符串
- javascript - 如何获取 chart.js 图表以在 Node/React Web 应用程序中显示数据?