最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

停止和重新启动在特定条件节点的JS循环功能

IT培训 admin 9浏览 0评论

停止和重新启动在特定条件节点的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);

我没有测试,但它应该工作。给一些反馈它是否有效

发布评论

评论列表 (0)

  1. 暂无评论