传递一个函数,该函数使ajax请求在.done时为$.when
passing a function which makes ajax requests to $.when .done
我想动态生成ajax请求,但我想确保在它们全部完成后得到回调,所以我想将它们封装在.wwhen.done语句中,如下所示:
$.when(function(){
$.each(oOptions, function(){
var filePath = this.filePath,
dataType = this.dataType;
$.ajax({
url : filePath,
dataType : dataType
});
});
})
.done(function(){
console.log('success');
console.log(arguments);
})
.fail(function(){
console.log('failed');
});
其中,我的选项是一个对象数组,其中包含我要同时发出的每个ajax请求的文件路径和数据类型。这段代码将返回成功,但参数只是一个函数,ajax请求永远不会通过。有什么想法吗?
您将一个函数传递给$.when
,而您应该传递一个或多个Deferred
。您可以用延迟填充数组,并将其作为参数传递给$.when
:
var deferreds = [];
$.each(oOptions, function() {
var filePath = this.filePath,
dataType = this.dataType;
deferreds.push($.ajax({
url : filePath,
dataType : dataType
}));
});
// use the array elements as arguments using apply
$.when.apply($, deferreds)
.done(function(){
console.log('success');
console.log(arguments);
})
.fail(function(){
console.log('failed');
});
是否必须将"done"逻辑作为成功函数放入$.ajax调用参数中?我的意思是:
$.ajax({
url : filePath,
dataType : dataType,
success: function(){
console.log('success');
}
});
由于ajax调用是异步进行的,所以可以在ajax调用完成之前调用done()。。。
相关文章:
- 暂停函数执行流程,直到ajax请求完成
- google在类内映射javascript directionsService.route请求:将类实例传递给回调函数
- 如何发送作为节点请求响应函数中的代码块的响应
- 为什么不't CasperJS'sendAJAX函数为PUT请求发送任何内容
- 如何在类函数中发送ajax请求
- JavaScriptajax请求servlet调用错误回调函数
- 如何仅在完成对gap.client.youtube的请求.execute后执行函数
- 使用 PHP 生成的按钮生成 POST 请求,这些按钮调用带有参数的 javascript 函数
- 节点 js 将变量传递到请求回调函数中
- 在导出函数 MEANJS 中编写 Http 请求
- 将对象函数传递给请求动画帧时丢失对象引用
- 将请求作为参数传递给函数
- 带有Ajax请求的Javascript JSON.parse函数n〃;新行转义字符
- 迭代node.js请求函数
- AJAX请求导致更改函数解除绑定
- AngularJS http.jsonp请求.then和.success函数不起作用
- 使用jQuery.ajax请求向PHP函数发送一个对象数组
- AJAX请求返回Javascript获胜't返回特定函数,但将返回其他函数
- var someSome=(函数(){..}());一个奇怪的javascript请求
- Alexa API通过lambda函数请求