不使用setTimeout的Javascript延迟

不使用setTimeout的Javascript延迟,javascript,mongodb,Javascript,Mongodb,我正在编写一个MongoDB存储的javascript脚本。此上下文似乎不允许使用setTimeout方法 在我的脚本中,我需要以10毫秒的间隔发布一定数量的数据库更新(脚本运行大约需要5秒,但每个文档更新的间隔必须为10毫秒左右) 在不使用setTimeout技术的情况下,将更新间隔10ms的最佳方法是什么?脚本将在本地工作站上运行,而不是在服务器上运行,因此锁定机器几秒钟不会是一场灾难。如果锁定机器不会成为问题,您应该能够执行无限循环和日期()。看看x时间是否过去了 var currentT

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

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


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

如果锁定机器不会成为问题,您应该能够执行无限循环和日期()。看看x时间是否过去了

var currentTime = new Date()
var waitTill = (new Date(currentTime.getTime() + 1000 * 5)).getTime()

for (;;)
    if ((new Date()).getTime() > waitTill)
        break;

alert("Done")

不知道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());
功能延迟(ms){
风险限额=新日期();
limit=limit.setmillizes(limit.getmillizes()+ms);
而((新日期())<限制){
//无所事事
;
}
}
log((new Date()).getmillizes());
延迟(150);
log((new Date()).getmillizes());

这是否意味着
setInterval
也不可用?