待机时JS计算

时间:2014-05-23 23:00:44

标签: javascript multitasking chess

我在JS写了一个国际象棋引擎,但它只是在思考'什么时候它移动了。有没有办法让我在自己的行动中进行计算?像脚本必须计算最佳移动并同时等待我的行动?我称之为多任务处理。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用每个间隔执行少量工作的setInterval()

function doSomeCalculating() {
    if (nextMoveCalculated) {
        return;
    }

    var start = new Date();
    while (true) {
        // break the loop if more than 100ms have elapsed
        var now = new Date();
        if (now.getTime() - start.getTime() > 100) {
            break;
        }

        // do a small amount of calculating here (keyword small)
    }
}

setInterval(doSomeCalculating, 1000); // runs every second

诀窍是对每个回调进行 处理,否则UI将被阻止。如果您注意到回调每1000毫秒运行一次并且完成100毫秒的工作。

您的里程可能会因设置间隔而有所不同,但其目的是为其他浏览器活动留出足够的CPU周期。