gpt4 book ai didi

javascript 异步帮助 async.timesLimit

转载 作者:行者123 更新时间:2023-11-30 14:23:19 24 4
gpt4 key购买 nike

我正在尝试异步抓取网站,但不是一次执行 500 个请求,而是一次执行 3 个请求

module.exports.siteRequest = function(n,userInput) {
payload["numb"]=n
axios.post(URL, payload, { headers: headers }).then(res => {
console.log("id",id)
console.log(res.data)
})
.catch(e => {
console.log("err");
});
};


async.timesLimit(500,2, function(n, next) {
siteRequest(n,data)
});

最佳答案

您需要调用 timesLimit 中的 .next 函数,以便向 timesLimit 迭代器发出应该请求下一个项目的信号。例如,以下代码将发出 10 个请求,每次请求不超过 2 个:

const makePromise = () => new Promise(res => setTimeout(res, 500)).then(() => {
console.log('resolving');
});
function siteRequest() {
console.log('initializing');
return makePromise();
};


async.timesLimit(10,2, function(n, next) {
siteRequest().then(next);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/async/2.6.1/async.min.js"></script>

对于你的代码,确保 returnaxios 返回的 Promise,这样你就可以在你的 时间限制。您还可以使用点表示法,如果可能,它比括号表示法更可取:

module.exports.siteRequest = function(n,userInput) {
payload.numb = n
return axios.post(URL, payload, { headers: headers }).then(res => {
console.log("id",id)
console.log(res.data)
})
.catch(e => {
console.log("err");
});
};
async.timesLimit(500,2, function(n, next) {
siteRequest(n,data).then(next);
});

关于javascript 异步帮助 async.timesLimit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52359729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com