Dojo Deferredsの推奨使用例は、dojo.when(def)またはdef.then()を使用し、Deferredが解決されたときのコールバックを提供することです。しかし、時々私は現実のスレッドに進む前にDeferredが完了するのを待つ必要がある状況に遭遇します。ここでDojo Deferredが解決されるまでどのようにブロックできますか?
function getSomething() {
var def = getSomeDeferred();
def.then(function(result) {
dojo.place("<li>def.then() = " + result + "</li>", "output");
});
return def.gimmeTheResultNow();
}
dojo.place("<li>getSomething() = " + getSomething() + "</li>", "output");
が明らかDeferred.gimmeTheResultNow()
が存在しない例(http://jsfiddle.net/DG3Ax/2/の完全な例では)ですが、それは私が探している機能です。私はgetSomething()を呼び出すコードを制御していないので、それをDeferredにすることはできません。実際の結果が必要です。
xhrGet()には、これがAJAX呼び出しの場合はジョブを実行すると思われるsyncパラメータがありますが、必ずしもそうであるとは限りません。これを達成する他の方法はありますか?
私はあなたの延期が何をしているのか分かりませんが、あなたはそれを取り除かなければならないようです。遅延は、非ブロッキング、非同期動作用です。 – bfavaretto