为什么nodejs使用forEach下载不是同步下载,使用for却可以同步下载
这是因为 JavaScript 的 Array.prototype.forEach 方法是同步的,但它不会等待回调函数的异步操作。当你在 forEach 的回调函数中使用异步操作(例如,Node.js 中的下载操作)时,forEach 会立即启动所有操作,而不会等待它们完成。map同理,返回的都是promise对象。
相反,for 循环可以与 async/await 一起使用,以便在继续下一次迭代之前等待每个异步操作完成。这就是为什么你可以使用 for 循环来同步下载。
以下是一个例子:
// 使用 forEach,这将并行启动所有下载 urls.forEach(async (url) => { const data = await download(url); console.log(data); }); // 使用 for 循环,这将按顺序下载每个 URL for (const url of urls) { const data = await download(url); console.log(data); }
积累小的知识,才能成就大的智慧,希望网上少一些复制多一些原创有用的答案