我有一个变量can_run
,可以是1或0,然后我有一个函数队列,只要变量从0
切换到1
(但一次只能有一个这样的函数)就应该运行, 。JavaScript中的信号量队列?
现在,我要做的就是
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中并不需要信号量。
那么,这里使用什么?
编辑:我写了“功能队列”,但在这里看到,我并不真正关心订单。
您是否使用jQuery或Dojo之类的任何库?它们具有与您的使用相匹配的延迟功能。 –
您需要了解承诺。查看Q或jQuery的延期。 – djechlin
@karel - 请不要编辑这样的问题... – Neal