gpt4 book ai didi

ajax - 异步 AJAX 调用返回什么?

转载 作者:行者123 更新时间:2023-12-01 23:05:53 25 4
gpt4 key购买 nike

我正在尝试创建一个测试用例来监控多个并行异步服务器任务的进度。我的代码可以正常工作,但有几处我不明白。首先,下面的 $.ajax 调用返回了什么?理论上,它应该返回 undefined,但事实并非如此。

function doParallel() {    
var promiseA, promiseB, handleSuccess, handleFailure;
var dataA = JSON.stringify({ size: a });
var dataB = JSON.stringify({ size: b });

promiseA = $.ajax({
url: testGlobal.urlA,
data: dataA,
type: "POST",
async: true,
contentType: 'application/json; charset=utf-8',
dataType: "json",
success: function (rtnData) {
// Get the result
result = (rtnData === undefined) ? null : $.parseJSON(rtnData.d);
},
error: function (xhr, textStatus, errorThrown) {
// Whoops! didn't work
reportAjaxError(xhr, textStatus, url, data);
},
complete: function (xhr, textStatus) {
// Errors have already been handled, so only
// deal with success cases
}
}); <--- WHAT GETS RETURNED TO PROMISE HERE?

... (same code for promiseB, etc.
var notifyingPromiseA = intervalPromise(2000, 'a');
var notifyingPromiseB = intervalPromise(2000, 'b');

...
promiseA.done(function() {
log("A done");
}
promiseB.done(function() {
log("B done");
}
$.when(promiseA, promiseB).done(function() { log ("All done") });
}

function intervalPromise(millis, source) {
var deferred = $.Deferred();
//checkProgress();
log("Checking progress on " + source);
var id = setInterval(function () {
deferred.notify();
if (testGlobal.aDone && testGlobal.bDone) {
clearInterval(id);
deferred.resolve();
}
}, millis);
return deferred.promise();
}

...

最佳答案

$.ajax() 返回 XMLHttpRequest 对象。从 jQuery v1.5 开始,$.ajax() 还实现并返回一个 Promise/Deferred 接口(interface)。

http://api.jquery.com/jQuery.ajax/

http://api.jquery.com/category/deferred-object/

使用 Promise,您可以根据原始 ajax 调用的结果链接其他回调。

// setup interval / timer to update UI not finished / still working logic

$.ajax().done(function() {
// clear UI not fninshed / still working logic
});

关于ajax - 异步 AJAX 调用返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16784895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com