【发布时间】:2014-10-22 23:43:05
【问题描述】:
代码中的其他地方是这样的:
function getMyDeferred() {
var deferred = $.Deferred();
$.ajax(url, {
success: function(data) {
deferred.resolve(data);
}
});
return deferred;
}
在我的代码中,我正在访问此方法并获取一个 Deferred 对象。有没有办法强制它在当前行等待,直到延迟完成?我意识到这可能违背了承诺和延迟的整个哲学,但我能做到吗?像这样的:
var deferred = getMyDeferred();
// do something here to ensure we do not proceed to the
// next step until deferred has been resolved
nextStep();
【问题讨论】:
-
只使用同步 ajax 代替? Ofc 这是不好的做法,不推荐,但如果这是你想要的..
-
Fabricio 出于所有意图和目的,假设我无权更改有关第一个代码块的任何内容。我只有第二个。我实际上在做的是单元测试,所以我需要它等待响应才能对响应做任何事情。
-
哦,我明白了。大多数单元测试框架都允许异步测试。
-
在
.then()中包含太多样板代码了吗?这是使用 Promise 的普遍接受的方式。 -
我认为你可以调用 defer.done(nextStep);.
标签: javascript jquery jquery-deferred