作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试异步抓取网站,但不是一次执行 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>
对于你的代码,确保 return
由 axios
返回的 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/
我正在尝试异步抓取网站,但不是一次执行 500 个请求,而是一次执行 3 个请求 module.exports.siteRequest = function(n,userInput) { payl
问题 我正在使用 Node 的异步库来处理 API。我遇到了似乎无法绕过的障碍。 我正在通过 RESTful API 修改数据库中的对象。我正在使用的命令称为 ModifyObject 并且它有效。我
我是一名优秀的程序员,十分优秀!