我正在编写一个MongoDB存储的javascript脚本。此上下文似乎不允许使用setTimeout方法。
在我的脚本中,我需要以10毫秒的间隔发出一定数量的数据库更新(脚本运行大约需要5秒钟,但每个文档更新必须间隔大约10毫秒)。
在不使用setTimeout技术的情况下,将更新间隔10ms的最佳方法是什么?该脚本将在本地工作站上运行,而不是在服务器上运行,因此将机器锁定几秒钟将不会是一场灾难。
答案 0 :(得分:1)
请不要特别了解mongoDB,但您可以使用以下代码强制执行脚本延迟。
显然这会在运行时锁定脚本,因此通常不建议使用,但在这种情况下可能对您的特定要求有效:
function delay(ms) {
var limit = new Date();
limit = limit.setMilliseconds(limit.getMilliseconds() + ms);
while ((new Date()) < limit) {
// do nothing
;
}
}
console.log((new Date()).getMilliseconds());
delay(150);
console.log((new Date()).getMilliseconds());
答案 1 :(得分:0)
如果锁定机器不会成为问题,您应该能够进行无限循环和Date()。看看x时间是否过去了。
var currentTime = new Date()
var waitTill = (new Date(currentTime.getTime() + 1000 * 5)).getTime()
for (;;)
if ((new Date()).getTime() > waitTill)
break;
alert("Done")