gpt4 book ai didi

javascript - JavaScript 循环迭代中的 POST 之间需要延迟

转载 作者:太空宇宙 更新时间:2023-11-04 02:53:33 24 4
gpt4 key购买 nike

我有一个 json 文件,我正在迭代其内容并为每次迭代使用 HTTP post 请求。 POST 请求将信息插入数据库。我需要在循环中或在 POST 之间引入延迟。我现在拥有的是这样的:

var request = require('request');

for (i = 0; i < arr.length; i++) {
request.post(
'http://localhost:3000/post',
{ form: { from: arr[i][0], to: arr[i][1]} },
function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body)
}
}
);
}

目前,POST 请求几乎是即时调用的,这给某些需要一定时间间隔的数据库插入逻辑带来了问题。有人对如何实现延迟有好主意吗?

谢谢

最佳答案

您遇到的问题是您混合了同步(循环)和异步(请求)操作。

没有机制可以让外部循环等待内部异步操作完成后再继续下一次迭代。

相反,您可以实现递归,要求回调函数发起外部“循环”的下一次迭代。

function do_post_req(arr_key) {
request.post(
'http://localhost:3000/post',
{ form: { from: arr[i][0], to: arr[i][1]} },
function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
if (arr[key+1]) do_post_req(key+1); //<-- recursion
}
}
);
}
do_post_req(0); //<-- kick things off with first array key

关于javascript - JavaScript 循环迭代中的 POST 之间需要延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26276169/

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