美文网首页
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