【发布时间】:2012-09-27 17:43:50
【问题描述】:
我知道 Dojo Deferreds 的推荐用例是使用 dojo.when(def) 或 def.then() 并在 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 调用,我认为它可以完成这项工作,但情况不一定如此。有没有其他方法可以做到这一点?
【问题讨论】:
-
我不知道你的 deferred 做什么,但似乎你应该摆脱它。延迟用于非阻塞、异步行为。
标签: javascript dojo deferred