不使用setTimeout的Javascript延迟

时间:2015-06-04 08:01:40

标签: javascript mongodb

我正在编写一个MongoDB存储的javascript脚本。此上下文似乎不允许使用setTimeout方法。

在我的脚本中,我需要以10毫秒的间隔发出一定数量的数据库更新(脚本运行大约需要5秒钟,但每个文档更新必须间隔大约10毫秒)。

在不使用setTimeout技术的情况下,将更新间隔10ms的最佳方法是什么?该脚本将在本地工作站上运行,而不是在服务器上运行,因此将机器锁定几秒钟将不会是一场灾难。

2 个答案:

答案 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")