У меня есть переменная 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.
Итак, что использовать здесь?
edit: Я написал "очередь функций", но, как видно здесь, меня не очень беспокоит порядок.