javascript - 如何在不使用 setTimeout 的情况下异步运行 javascript 函数?

标签 javascript rhino parallel-processing

它是服务器端 Javascript(rhino 引擎),因此 setTimeout 不可用。如何异步运行一个函数?

最佳答案

您可以使用 java.util.Timerjava.util.TimerTask滚动您自己的设置/清除超时和设置/清除间隔功能:

var setTimeout,
    clearTimeout,
    setInterval,
    clearInterval;

(function () {
    var timer = new java.util.Timer();
    var counter = 1; 
    var ids = {};

    setTimeout = function (fn,delay) {
        var id = counter++;
        ids[id] = new JavaAdapter(java.util.TimerTask,{run: fn});
        timer.schedule(ids[id],delay);
        return id;
    }

    clearTimeout = function (id) {
        ids[id].cancel();
        timer.purge();
        delete ids[id];
    }

    setInterval = function (fn,delay) {
        var id = counter++; 
        ids[id] = new JavaAdapter(java.util.TimerTask,{run: fn});
        timer.schedule(ids[id],delay,delay);
        return id;
    }

    clearInterval = clearTimeout;

})()

关于javascript - 如何在不使用 setTimeout 的情况下异步运行 javascript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2261705/

相关文章:

javascript - 使用 jquery 将值设置为属性

c - OpenMP C - 并行循环平均给出不同的结果

c++ - 并行计算——混淆了输出?

javascript - 我如何编写一个 Java 方法,从服务器端 JavaScript 调用,它将 JS 回调函数作为参数?

java - ScriptEngineManager.getEngineFactories 在 appengine 上不返回任何工厂

javascript - 如何使用 rhino 导入其他 javascript 文件

r - 并行处理时出错: port cannot be open

javascript - let 与 var 性能

javascript - 在js中使用html显示错误

javascript - 如何使用jquery用鼠标移动div?