Promise.all()和循环,并将结果并发存储到Javascript中的JSON对象
我希望循环遍历一个列表并并发调用,而不是按顺序调用并将结果存储在JSON对象中Promise.all()和循环,并将结果并发存储到Javascript中的JSON对象,javascript,promise,async-await,Javascript,Promise,Async Await,我希望循环遍历一个列表并并发调用,而不是按顺序调用并将结果存储在JSON对象中 var keys = ["1", "2", "10", "11", "12", "19", "20"]; for (const key of keys) { JSON_OBJECT[key] = await ns_bundle.get(key, "json") } 使用Promise.all()有什么方法可以实现这一点吗 我已经完成了一些实现,但这样我就不得不不必要地编写太多的代码行 co
var keys = ["1", "2", "10", "11", "12", "19", "20"];
for (const key of keys) {
JSON_OBJECT[key] = await ns_bundle.get(key, "json")
}
使用Promise.all()有什么方法可以实现这一点吗
我已经完成了一些实现,但这样我就不得不不必要地编写太多的代码行
const JSON_OBJECT = {}
const [JSON_OBJECT.a, JSON_OBJECT.b] = await Promise.all([first(a), second(b)])
将for循环的
主体放入异步.map
回调:
await Promise.all(
keys.map(async key => {
JSON_OBJECT[key] = await ns_bundle.get(key, "json");
})
);
也可以通过实现。然后
,但它更丑陋:
await Promise.all(
keys.map(
key => ns_bundle.get(key, "json")
.then((result) => {
JSON_OBJECT[key] = result;
})
)
);
还要注意的是。如果你有一个对象或数组,那么你有一个对象或数组,句号。JSON格式是一种用字符串表示对象的方法,如constmyjson='{“foo”:“bar”}'
。如果不涉及字符串、序列化或反序列化,那么也不涉及JSON。最好使用比JSON\u OBJECT
更合适的变量名。在两个代码块的表示中,这并不是一个公平的比较,因为您详细地格式化了第二个代码块(有很多额外的行)和第一个代码块(最少的行)。格式相似,两者之间不会有太大区别。