我需要拥有NodeJs API,才能继续在mongodb中创建随机数据。

我避免从客户端调用它,因为这应该完全在后端发生。

var autoCreate = function(){
  var randomNumb = (Math.random()* (10-0) + 0).toFixed(0);
  var randomThing = randomstring.generate({
    length: randomNumb,
    charset: 'alphabetic'
  });

  Thing.create({
    name: randomThing,
    readByUser: false
  }, function(err, thing) {
    if(err) { return handleError(res, err); }
  });

  setInterval(function() {
    autoCreate();
  }, randomNumb*1000);
}


但是,第一次如何以及在何处调用此函数。在我的Node API文件/控制器中,我不能只写autoCreate(),它会中断。

什么是正确的方法>

最佳答案

只要有一个活动计时器,您的脚本就会继续运行。

您问题中的代码有一个小缺陷,即每次调用函数本身时都会调用setInterval,但永远不会调用函数本身。
这意味着它尚未启动,如果要启动它,则将一直添加新的时间间隔,直到进程,数据库进程或整个系统崩溃为止。

使用setInterval的示例

function ping() {
  console.log('ping');
}

setInterval(ping, Math.random() * 1000);


只需以随机间隔开始ping -ing(其中随机时间生成一次并用作ping s之间的间隔)

使用setTimeout的示例(这似乎是您想要的)

function ping() {
  clearTimeout(timer);
  console.log('ping');

  timer = setTimeout(ping, Math.random() * 1000);
}

//  ensure the timer variable exists in the global scope
var timer;
ping();


在此示例中,您需要自己开始ping-它会一直以随机间隔调用自身。

关于javascript - 保持 Node js函数运行而无需使用前端的任何调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35507226/

10-09 18:23
查看更多