Dojo Deferredsの推奨される使用例は、dojo.when(def)またはdef.then()を使用し、Deferredが解決されたときのコールバックを提供することです。ただし、現在のスレッドを続行する前に、そのDeferredが完了するのを本当に待つ必要があるシナリオに遭遇することがあります。これが例です( http://jsfiddle.net/DG3Ax/2/の完全な例)
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()
存在しませんが、それが私が探している機能です。getSomething()を呼び出すコードを制御できないため、Deferredを処理することはできません。実際の結果が必要です。
xhrGet()には同期パラメーターがあり、これがAJAX呼び出しの場合に機能すると思いますが、必ずしもそうとは限りません。これを達成する他の方法はありますか?