停止和重新启动在特定条件节点的JS循环功能
我已经使用要求NPM从一个API获取数据。在响应我得到一个对象{数:1}
如果这个值是0,我通过发送邮件节点的电子邮件。
由于这一点,不断发送电子邮件,每3秒,但我想在600秒后发送下一封邮件,如果值仍然是0。
我怎么能做到这一点,而不停止3秒循环。
这里是我的代码
var request = require("request");
function getreq1() {
request.get('', {
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,发送电子邮件不应该为600秒,发送电子邮件,如果值仍然是0后
回答如下:一个简单的方法是有一个全局变量,考虑到你从同一个URL总是get
。 600秒3秒划分为200,从而可以使用模数(余数)操作者%
。
var request = require("request");
var timerSum = 0;
function getreq1() {
request.get('https://api.xxxx/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);
我没有测试,但它应该工作。给一些反馈它是否有效
停止和重新启动在特定条件节点的JS循环功能
我已经使用要求NPM从一个API获取数据。在响应我得到一个对象{数:1}
如果这个值是0,我通过发送邮件节点的电子邮件。
由于这一点,不断发送电子邮件,每3秒,但我想在600秒后发送下一封邮件,如果值仍然是0。
我怎么能做到这一点,而不停止3秒循环。
这里是我的代码
var request = require("request");
function getreq1() {
request.get('', {
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,发送电子邮件不应该为600秒,发送电子邮件,如果值仍然是0后
回答如下:一个简单的方法是有一个全局变量,考虑到你从同一个URL总是get
。 600秒3秒划分为200,从而可以使用模数(余数)操作者%
。
var request = require("request");
var timerSum = 0;
function getreq1() {
request.get('https://api.xxxx/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);
我没有测试,但它应该工作。给一些反馈它是否有效