一部の場所では、関数のインスタンスを1つだけ実行する必要があります。
このコードは私のために働きます:
function example() {
var that = this;
if(that.running) {
return false;
}
that.running = true;
$.get(url, {}, function (data) {
that.running = false;
});
}
どうすればそれを改善し、より再利用可能にすることができますか?
UPDこれがFritsvanCampenの回答に基づく解決策です。
function make_run_once(callback) {
callback.running = false;
return function () {
if(callback.running) {
return false;
}
callback.running = true;
deferred = $.Deferred();
deferred.done(function () {
callback.running = false;
});
callback(deferred); // pass deferred to callback so it can resolve at it's own leisure
};
}