有没有办法使用新的“async”javascript关键字替换异步模块中的async.map?基本上我想尽可能避免使用异步模块。例如,一次读取多个文件,然后在读取所有文件后执行某些操作。
答案 0 :(得分:3)
是的,通常您可以使用Promise.all
执行此操作。
let urls = [...];
let promises = urls.map(function(url) {
return fetch(url).then(result => result.json()); // or whatever
});
Promise.all(promises).then(function(results) {
// deal with the results as you wish
});
或者,以单行方式进行:
Promise.all(urls.map(url => fetch(url).then(res => res.json()))).then(function(results) {
// deal with the results as you wish
});
虽然这很容易阅读,但我担心......
它不像async.map
那么光滑,但当然写一个合适的包装并不难。
答案 1 :(得分:0)
辅助功能:
const titles = await asyncMap([1, 2, 3], async number => {
const response = await fetch(
`https://jsonplaceholder.typicode.com/todos/${number}`
);
const json = await response.json();
return json.title;
});
样品用量:
{{1}}的启发