我以为我终于了解了承诺,但似乎我有点偏离。
任何人都可以让我摆脱困境并解释我在这里做错了什么:
t010 = {
myGet: function(url) {
var result = new $.Deferred();
result.resolve(ajaxRequest(url));
}
}
然后我的main方法调用它:
$.when(t010.myGet(seatId), t010.myGet(roomId)).then(function(d1, d2) {
console.log(d1);
}
我每次只是控制日志未定义。
我认为我想要达到的目标是相当明显的,我想两次调用myGet,当两者都完成后,对结果做一些事情。
全部谢谢!
答案 0 :(得分:2)
您必须返回使用$.when
t010 = {
myGet: function(url) {
var result = new $.Deferred();
result.resolve(ajaxRequest(url));
return resolve.promise();
}
}
但是这会立即解决承诺,传回ajaxRequest
函数的结果,当时可能是undefined
?
但是,ajaxRequest
已经看起来像是返回一个承诺,你可以直接返回
t010 = {
myGet: function(url) {
return ajaxRequest(url));
}
}
假设你的ajax函数看起来像
function ajaxRequest(url) {
return $.ajax({
url : url
});
}