jQuery を使用しているため、非同期関数 (通常は ajax) のインターフェイスを簡素化するために使用できる非常に効率的なパターンがあります。
function getScore() {
return $.ajax({...}); //$.ajax returns a promise/deferred object
}
次に、次のようなことができます
getScore().done(function (score) {
});
jQueryのDeferredオブジェクトについて読むことを強くお勧めします。
編集: ajax リクエストを実行していないが、代わりにsetTimeout
orを使用setInterval
してデータを非同期的に処理する場合でも、Deferred
オブジェクトを使用できます。
これは、非同期的に値を合計し、クライアント コードが制御フローを効率的に処理できるようにするオブジェクトを返す関数がある例です。Deferred
function sumValuesAsync(values) {
var deferred = arguments[1] || $.Deferred(),
i = arguments[2] || 0,
sum = arguments[3] || 0;
sum += values[i];
if (++i === values.length) {
deferred.resolve(sum); //notice observers that the process is completed
} else {
setTimeout(function () {
sumValuesAsync(values, deferred, i, sum);
}, 500);
}
return deferred;
}
sumValuesAsync([1, 1, 1, 1]).done(function (total) {
console.log(total);
});