美文网首页
for、forEach与async

for、forEach与async

作者: 小遁哥 | 来源:发表于2021-05-28 13:04 被阅读0次

背景

通过无头浏览器下载音频,发现之前对于forEach过于崇拜了,以至于答案就在身边也没发现。

第一种写法

    new Array(10).fill(1).forEach(async (item, index) => {
      await new Promise((resolve) => {
        setTimeout(() => {
          resolve();
        }, Math.random() * 3000);
      });
      console.log(`下载音频${index}完成`);
    });

同时开启10个下载任务,并且不能保证下载的顺序,这个成功率和网速等有很大的关系,不好的时候同时下载五个也会有失败的情况,那么重新下载也不能保证成功的就是上一次失败的

第二种写法

    (async function () {
      for (let i = 0; i < 10; i++) {
        await new Promise((resolve) => {
          setTimeout(() => {
            resolve();
          }, Math.random() * 3000);
        });
        console.log(`下载音频${i}完成`);
      }
    })();

一个一个的按照顺序下载,下载失败的机率几乎为0,这样的话执行一次命令都下载完也不成问题了。

在node.js中使用无头浏览器批量下载音频

相关文章

网友评论

      本文标题:for、forEach与async

      本文链接:https://www.haomeiwen.com/subject/sjlssltx.html