检测所有 XMLHttpRequest 调用是否已完成
Detect all XMLHttpRequest calls are completed
我有将文件上传到服务器的Javascript代码。每个上载都是使用 XMLHttpRequest 对象完成的。
xhr = new XMLHttpRequest();
//...
xhr.open('POST', 'https://<bucket>.s3.amazonaws.com/', true);
xhr.send(fd);
并行上传工作正常。问题是我需要检测他们什么时候都完成了,因为我必须做一个最终的提交,但前提是所有上传都完成了。
我的第一次尝试是将所有 xhr 对象保存在一个数组中,但我不知道如何处理它:-(
var arrayxhr = [];
//...
//A loop {
xhr = new XMLHttpRequest();
arrayxhr.push(xhr);
xhr.open('POST', 'https://<bucket>.s3.amazonaws.com/', true);
xhr.send(fd);
//}
//And now?
我发现这个jQuery函数 https://api.jquery.com/ajaxcomplete/,但同样,我真的不知道如何使用它。
你能帮我吗?
TIA,
如果可以使用jQuery
则可以使用jQuery
AJAX 延迟接口/方法和$.when
方法。 $.ajax/$.post/$.get
和其他 jQuery AJAX 方法始终返回 jQuery 延迟对象:
$.when($.get('someUrl'), $.get('anotherUrl')).then(function () {
//all request complete
});
在原生 JavaScript 中,您可以使用原生Promise
或任何 promise 库:
- http://www.javascriptoo.com/rsvp-js
- http://www.javascriptoo.com/Q(示例 https://gist.github.com/matthewp/3099268)
还有一篇关于承诺的好文章 - http://www.html5rocks.com/en/tutorials/es6/promises/。
本机Promise
XMLHttpRequest
示例:
function doAjaxRequest(method, url, data){
var promise = new Promise();
var xhr = new XMLHttpRequest();
xhr.open(method, url, true);
// Register the event handler
xhr.onload = function(){
if(xhr.status === 200){
promise.resolve("Done");
} else{
promise.reject("Failed");
}
};
data = data || {};
xhr.send(data);
return promise;
}
Promise.all(doAjaxRequest('post', 'someUrl'), doAjaxRequest('post', 'anotherUrl')).then(function (values) {
//all request complete
});
好吧,这不是我问题的答案(检测异步调用是否已完成),但这个答案对我有用。我在这里复制以防万一它对其他人有帮助:
2:在客户端,创建一堆要上传和上传的文件 一次一个,在 以前。
https://stackoverflow.com/a/15557631/1893936
相关文章:
- 在动态crm 2011中,右键单击已完成活动的只读文本时,您是否出现错误
- 检查jquery(或ajax)功能是否已完成
- 检查浏览器是否已完成页面加载
- 如何检查AJAX请求是否已完成
- 如何查找是否所有 ajax 请求都已完成,并且每个请求都使用 Javascript 和/或 JQuery 将数据从服务器
- 检查 URL 是否已完成加载
- 如何检查挖空是否已完成数据绑定
- 如何检查窗口是否仍在加载并已完成加载
- 检测所有 XMLHttpRequest 调用是否已完成
- 如何检测文件的下载是否已完成
- 当任何承诺都已完成时,是否有可能履行承诺
- 正在检查Google Analytics是否已(异步)完成对我的页面的跟踪
- 确定websocket send()是否已完成
- 如何查找是否所有动画都已完成
- 检查promise是否已用Javascript完成
- 如何知道 Javascript 追加方法是否已完成脚本标记
- 检查任务是否已完成
- 在绘制d3图表之前,请检查多个异步函数是否已完成
- 如何检查ajax调用是否已完成以及何时完成
- 在JavaScript中检测选项卡/下载是否已完成加载