Deferred对象内的回调函数

时间:2013-03-05 09:15:37

标签: jquery deferred

我正在尝试关注一些有延迟实现的javascript课程。 这是代码的核心

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(结果)时才做出的承诺?...

1 个答案:

答案 0 :(得分:1)

除最后一行外,一切都正确:

$.when(somthing.getData(options)).done(alert(options.results));
debugger;

您可以立即致电alert(和debugger)。你想要的是将回调传递给done,如下所示:

$.when(somthing.getData(options))
.done(function(){
    alert(options.results);
    debugger;
});