我使用XMLHttpRequest
检索一些数据的代码如下所示:
var myObject = new MyObject();
var req = new XMLHttpRequest();
req.addEventListener("load", function () {
myObject.data = req.responseText;
}, false);
req.addEventListener("loadend", function () {
myObject.save();
}, false);
req.open("GET", "http://www.example.com/foo.txt", true);
req.send(null);
基本上,如果Ajax请求成功,我想保存在myObject
中检索的数据,然后无论Ajax请求的状态如何,我都想将myObject
保存到数据库中。到目前为止,它的工作原理是如此,但我对load
和loadend
听众的执行顺序略感不安。我能找到的最多来自XMLHttpRequest
living standard(关于loadend
):
发出错误之一后,已分派中止,超时或加载。
这是否保证如果Ajax请求成功,load
侦听器完成在loadend
侦听器启动之前执行?
答案 0 :(得分:0)
load
和loadend
听众的执行顺序
您可以从the standard判断,loadend
将始终在load
或相应的错误事件后发送。
这是否保证如果Ajax请求成功,
load
侦听器将在loadend
侦听器启动之前完成执行?
JavaScript是单线程的,具有运行完成事件循环。两个听众永远不会同时跑。