背景
通过无头浏览器下载音频,发现之前对于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,这样的话执行一次命令都下载完也不成问题了。
网友评论