我有以下代码
var a = ajax1();
var b = ajax2();
$.when(a,b).done(function(){
var d = function123();
$.when(d).done(function(){//doSomething});
});
function function123(){
var c = ajax3();
return c.promise();
}
return $.when(a,b,c).promise()//???;
如何在返回功能之前等待一切完成?
编辑: 我使用以下代码测试代码:
var e = $.when(a,b)
.done(function(){
var d = function123();
d.done(function(){
console.log('1');
});
return d.done(function(){//doSomething});
});
e.done(function(){
console.log('2');
});
我的回复结果为' 2 1'。但是我期待的结果是' 1 2'。 我可以知道为什么会这样吗?
答案 0 :(得分:0)
你不喜欢!你回复承诺,当它被解决(或被拒绝)时,你继续做你正在做的事情。如何在返回功能之前等待一切完成?
var e = $.when(a,b).done(function(){
var d = function123();
return d.done(function(){//doSomething});
});
注意添加return
- 这将返回您的承诺。通过将d.done
的响应设置为另一个变量(在这种情况下为e
),您将获得一个在内部所有内容都得到解决后将得到解决的承诺。
e.done(function(){
//everything is done
});
另请阅读本Q / A的完整内容:How do I return the response from an asynchronous call?