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