如何将“数据”提供给jQuery延迟对象的done方法?

时间:2015-10-02 16:58:02

标签: jquery ajax

当在jQuery的延迟对象中使用回调函数时,特别是使用ajax调用时,该函数被赋予三个参数dataresponseTextjqXHR对象。我无法遵循提供这些参数的特定逻辑。它们如何被提供给方法中的匿名函数? data定义在哪里?

示例:

这可以工作并记录数据:

deferredObj
    .done(function(data){
        console.log(data)
    });

这不起作用,数据是一个未知变量:

defferedObj
     .done(console.log(data));

1 个答案:

答案 0 :(得分:1)

  

这不起作用,数据是未知变量

     

defferedObj.done(console.log(data));

当您使用console.log(data)作为回调时,会在遇到该函数时立即调用该函数。

因此,在调用log时,data变量为undefined

这就像调用函数.done(myFun())

如果要将函数console.log作为回调函数调用,并自动传递参数,可以将其称为

defferedObj
    .done(console.log.bind(console));
  

它们如何被提供给方法内的匿名函数?数据定义在哪里?

你可以想到定义如下的异步函数:

function asyncDoSomething(param, callback) {
    // Do something asynchronously here to get the data from somewhere
    // Maybe DB/Network, etc.

    // When processing is completed and data is retrieved
    callback && callback(data);
}