【发布时间】:2013-07-05 21:50:28
【问题描述】:
我有一个变量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 中并不真正需要信号量。
那么,这里用什么?
编辑:我已经编写了“函数队列”,但正如这里所见,我并不真正关心顺序。
【问题讨论】:
-
您是否在使用任何库,例如 jQuery 或 Dojo?它们具有与您的使用相匹配的延迟功能。
-
你需要了解promise。请参阅 Q 或 jQuery 的延迟。
-
@karel -- 请不要编辑这样的问题...
-
同意@Neal,如果你想用你今天使用的东西发布一个自我回答。在问题本身中回答问题并不是一个好主意。
-
另外@karel 我更新了我的答案以使用 es6。如果对您有帮助,请记住选择已接受的答案:-)
标签: javascript