gpt4 book ai didi

javascript - 在特定条件下停止并重新启动 Node js 中的循环函数

转载 作者:行者123 更新时间:2023-11-30 14:10:08 25 4
gpt4 key购买 nike

我使用请求 npm 从 API 获取数据。在响应中我得到一个对象{计数:1

如果此值为 0,我将通过 Node 邮件程序发送电子邮件。

因此,它会继续每 3 秒发送一次电子邮件,但如果该值仍为 0,我想在 600 秒后发送下一封电子邮件。

如何在不停止 3 秒循环的情况下实现这一目标。

这是我的代码

var request = require("request");
function getreq1() {
request.get('https://api.xxxx.com/xxxxx/xxxxx', {
oauth: {
//some code here
},
qs: {
//some code here
}
}, function (err, res, body) {
if (err) throw new Error(err);
var value = (JSON.parse(body).property['xxxxx'].prop);
if (value === 0){
console.log("Sending Alert email");
sendmail();
} else{
console.log("All is well");
}
});
};

function init(timer) {

getreq1();

setTimeout(function () {
init(timer)
}, timer);
}

init(3000);

我希望 getreq() 每 3 秒运行一次,但如果值 ===0 则发送电子邮件的函数,如果值仍然为 0,则在发送电子邮件后 600 秒内不应发送电子邮件

最佳答案

一个简单的方法是拥有一个全局变量,考虑到您总是从同一个 url get。 600 秒除以 3 秒等于 200,因此您可以使用模数(余数)运算符 %

var request = require("request");

var timerSum = 0;

function getreq1() {
request.get('https://api.xxxx.com/xxxxx/xxxxx', {
oauth: {
//some code here
},
qs: {
//some code here
}
}, function (err, res, body) {
if (err) throw new Error(err);
var value = (JSON.parse(body).property['xxxxx'].prop);

//use Modulus (Remainder), on 0, 200, 400, 600, timerSum%200 === 0 is true
if (value === 0){
if(timerSum%200 === 0){
console.log("Sending Alert email");
sendmail();
}
timerSum++;
} else if(value === 1){
console.log("All is well");
timerSum = 0; //reset
}
});
};

function init(timer) {

getreq1();

setTimeout(function () {
init(timer)
}, timer);
}

init(3000);

我没有测试,但应该可以。给一些反馈是否有效

关于javascript - 在特定条件下停止并重新启动 Node js 中的循环函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54615405/

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