进行定时任务,发现一个奇怪的现象,调试模式和正式运行的打印结果顺序不同
发布于 7 年前 作者 hezhongfeng 4595 次浏览 来自 问答

代码是这样的,在每分钟的0,10秒执行一次

schedule.scheduleJob('0,10,20,30,40,50 * * * * *', function () {
  console.log('before!');
  console.log(new Date());
  console.log('after!');
});

下面是npm start运行结果,和期望一致

before!
2017-06-20T07:42:10.005Z
after!
before!
2017-06-20T07:42:20.000Z
after!
before!
2017-06-20T07:42:30.002Z
after!
before!
2017-06-20T07:42:40.002Z
after!
before!
2017-06-20T07:42:50.002Z
after!
before!
2017-06-20T07:43:00.003Z
after!
before!
2017-06-20T07:43:10.002Z
after!
before!
2017-06-20T07:43:20.000Z
after!

这个是在vscode的调试结果node --inspect=32772 --debug-brk index.js ,但我打断点的时候顺序又正常了,可见他们的执行顺序应该是正确的,但是不知道为什么打印的时候确实这样的,请问有人明白吗?

before!
after!
Tue Jun 20 2017 15:40:10 GMT+0800 (中国标准时间) {}
before!
after!
Tue Jun 20 2017 15:40:20 GMT+0800 (中国标准时间) {}
before!
Tue Jun 20 2017 15:40:30 GMT+0800 (中国标准时间) {}
after!
before!
after!
Tue Jun 20 2017 15:40:40 GMT+0800 (中国标准时间) {}
before!
after!
Tue Jun 20 2017 15:40:50 GMT+0800 (中国标准时间) {}
8 回复

把输出时间改为普通字符串, 我感觉new一个对象需要时间…

来自酷炫的 CNodeMD

想看看完整的code From Noder

@zswnew 需要时间怎么了额~ 这里是顺序执行的

@lei2231 这还不完整吗? function里面的就是重复执行

回到顶部