我如何操作数据来自多个异步ajax异步调用与回调
How do I manipulate data coming from multiple async ajax async calls with callback?
我有以下一段代码,使用回调进行异步ajax调用。
我的第一个主要问题是,当我做数据操作使用回调函数setA,setB,…ajax调用的返回值并不总是存在,我结束了对来自"dataFromAjax"的未识别变量的操作。是否有一种方法可以在setB中执行操作,只有当我知道我在dataFromAjax['firstCall']中有一些数据由函数setA设置?
第二个问题有没有一种方法可以简化代码,而不必为每个数据操作创建一个新的成功函数?
dataFromAjax = {};
function makeACall(url,successCallBack,errorCallback){
$.ajax({
type: 'GET',
async: true,
url: url,
success: successCallBack,
error: errorCallback
});
}
makeACall(url,setA,errorAjax)
makeACall(url,setB,errorAjax)
makeACall(url,setC,errorAjax)
makeACall(url,setD,errorAjax)
function setA(ajaxData){
dataFromAjax['firstCall'] = ajaxData;
}
function setB(ajaxData){
dataFromAjax['secondCall'] = dataFromAjax['firstCall'] + ajaxData;
}
function setC(ajaxData){
dataFromAjax['thirdCall'] = dataFromAjax['secondCall'] / ajaxData;
}
您可以尝试使用$.when
函数,这里是文档https://api.jquery.com/jquery.when/基本上你的代码看起来像在例子中:
$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) ).done(function( a1, a2 ) {
// a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively.
// Each argument is an array with the following structure: [ data, statusText, jqXHR ]
var data = a1[ 0 ] + a2[ 0 ]; // a1[ 0 ] = "Whip", a2[ 0 ] = " It"
if ( /Whip It/.test( data ) ) {
alert( "We got what we came for!" );
}
});
在您的情况下,类似于(取决于您想要实现的)
$.when($ajax.(url), $.ajax(url), $.ajax(url), $.ajax(url)).then(success, error);
function success(a, b, c, d) { return (a+b)/c; }
function error() { /* error handling */ }
如果您想检查对象中是否存在属性(使其更一致)
if (dataFromAjax.firstCall) {
dataFromAjax.secondCall = dataFromAjax.firstCall + ajaxData;
}
我不确定我是否理解,但如果你不想为每个ajax调用做一个单独的成功回调,你可以做一个默认的,并删除一个参数。
function defaultSuccess(ajaxData) {
// do what you want
}
function makeACall(url, errorCallback){
$.ajax({
type: 'GET',
async: true,
url: url,
success: defaultSuccess,
error: errorCallback
});
}
相关文章:
- 调用后不异步Ajax忽略函数
- 在异步AJAX调用完成后,通过变量运行函数
- 将 jQuery UI 日期选择器与异步 AJAX 请求一起使用
- AngularJS:多个异步AJAX调用
- Qt-WebView是否支持包含异步Ajax的网页
- 同步/异步AJAX函数的模式
- 单击链接时执行异步AJAX调用,然后跟随该链接
- Javascript异步AJAX和递归排序
- 记住使用异步 Ajax 获取数据的 Javascript 函数
- 如何将异步 ajax 响应捕获到变量中
- 异步 ajax 调用阻止 UI
- JavaScript 中异步 Ajax 调用的测试结果
- 使用异步/ajax 时保持不变的粘性页脚
- 使用 ko.mapping.fromJS 更新异步 ajax 调用后可观察的淘汰表
- 使用异步 AJAX 或 jQuery 完全重新加载页面
- 而循环与jQuery异步AJAX调用
- Javascript:同步使用异步 AJAX
- JQuery/Ajax:如何将多个 ajaxes 组合成一个具有响应的异步 ajax
- 双异步 AJAX 函数
- jQuery 等到异步 ajax 调用完成