应用场景:在使用nodejs编写爬虫脚本时,有时会大量的调用接口,但是不能简单的for循环一次几百上千个接口同时出去,很刑
实现效果:将接口放在一个数组中,让程序按照顺序依次调用
const axios = require("axios");
const fs = require("fs");
async function getList() {
const { data } = await axios({
url: "获取请求地址列表",
method: "get",
});
return data;
}
async function download(item) {
// console.log(item);
await axios({
method: "get",
url: item.pic_url,
responseType: "stream",
}).then(function (response) {
response.data.pipe(fs.createWriteStream(`./img/${item.id}.jpeg`));
});
}
async function run() {
let list = await getList();
await list.reduce(async (prev, item, i) => {
await prev;
return new Promise(async (resolve, reject) => {
await download(item);
resolve();
});
}, Promise.resolve());
}
run();