我正在尝试学习一些 javascript 课程,其中有 Deferred 的实现。这是代码的核心
getData = function (options) {
return $.Deferred(function (def) {
var results = options.results;
getFunction({
success: function (smt) {
results("test");
def.resolve(results);
debugger;
},
error: function (response) {
def.reject();
}
});
}).promise();
},
现在的问题是..当我从外部调用这个函数时:
$.when(somthing.getData(options)).
done(alert(options.results));
debugger;
碰巧首先到达 $.when 调用之外的调试器,然后触摸 Deferred 对象内的回调 SUCCESS 函数内部的那个...
我不明白.. 不应该只在达到 def.resolve(results) 时才做出承诺?...