我最近注意到,当我在forEach循环中进行如下异步调用时:
fs.readdir(directory, function (err, filenames) {
if (err) throw err;
filenames.forEach(async function (filename) {
let promise = await query.getItemByName(filename);
});
});
它不会等到诺言得到解决,但如果我这样做了:
fs.readdir(directory, async function (err, filenames) {
if (err) throw err;
for (filename of filenames) {
let promise = await query.getItemByName(filename);
});
});
它等待诺言得到解决,我的意思是它会依次触发异步调用。
有人可以解释我为什么吗?
items.forEach(function (item){});
和for(item of items)
有什么区别?