我有一個變量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