“是怎么回事?”;“数据”;提供给jQuery延迟对象';什么方法完成了?

“是怎么回事?”;“数据”;提供给jQuery延迟对象';什么方法完成了?,jquery,ajax,Jquery,Ajax,在jQuery的延迟对象内部使用回调函数时,特别是在ajax调用中,该函数有三个参数,data,responseText,和jqXHR对象。我很难遵循提供这些参数的特定逻辑。如何将它们提供给方法内部的匿名函数?数据在哪里定义 例如: 这将工作并记录数据: deferredObj .done(function(data){ console.log(data) }); 这不起作用,数据是未知变量: defferedObj .done(console.log

在jQuery的延迟对象内部使用回调函数时,特别是在ajax调用中,该函数有三个参数,
data
responseText
,和
jqXHR
对象。我很难遵循提供这些参数的特定逻辑。如何将它们提供给方法内部的匿名函数?
数据在哪里定义

例如:

这将工作并记录数据:

deferredObj
    .done(function(data){
        console.log(data)
    });
这不起作用,数据是未知变量:

defferedObj
     .done(console.log(data));
这不起作用,数据是未知变量

deferedobj.done(console.log(数据))

当您使用
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);
}

您的意思是在触发
.done()
事件之前调用它?正在定义的
数据
变量在哪里?@Preston是的,因为您正在调用直接调用的函数。您没有传递函数,而是传递调用函数的结果返回的值