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