我有一个变量can_run
,它可以是 1 或 0,然后我有一个函数队列,它应该在变量从 切换0
到时立即运行1
(但一次只有 1 个这样的函数)。
现在,我所做的是
var can_run=1;
function wait_until_can_run(callback) {
if (can_run==1) {
callback();
} else {
window.setTimeout(function(){wait_until_can_run(callback)},100);
}
}
//...somewhere else...
wait_until_can_run( function(){
can_run=0;
//start running something
});
//..somewhere else, as a reaction to the task finishing..
can_run=1;
它有效,但是,连续运行大约 100 次超时并没有让我觉得非常有效。信号量之类的东西在这里会很方便;但总的来说,JavaScript 中并不真正需要信号量。
那么,在这里使用什么?
编辑:我写过“函数队列”,但正如这里所见,我并不关心顺序。