同步和异步请求 | 您所在的位置:网站首页 › 圣诞树上的植物 › 同步和异步请求 |
在一些需求情况下,必须读取多个外部文件。这是一个标准的函数。该函数使用 XMLHttpRequest 对象进行异步请求。而且可以为每个文件读取完成后指定不同的回调函数。 function xhrSuccess() { this.callback.apply(this, this.arguments); } function xhrError() { console.error(this.statusText); } function loadFile(url, callback /*, opt_arg1, opt_arg2, ... */) { var xhr = new XMLHttpRequest(); xhr.callback = callback; xhr.arguments = Array.prototype.slice.call(arguments, 2); xhr.onload = xhrSuccess; xhr.onerror = xhrError; xhr.open("GET", url, true); xhr.send(null); }用法: function showMessage(message) { console.log(message + this.responseText); } loadFile("message.txt", showMessage, "New message!\n\n");实用函数 loadFile 的签名声明(i)要读取的目标 URL(通过 HTTP GET),(ii)成功完成 XHR 操作时执行的函数,以及(iii)任意列表的附加参数“通过“XHR 对象到成功回调函数。 第 1 行声明 XHR 操作成功完成时调用的函数。它又调用已经分配给 XHR 对象(第 7 行)属性的 loadFile 函数(本例中为函数 showMessage)的调用中指定的回调函数。提供给调用函数 loadFile 的附加参数(如果有的话)被“应用”到回调函数的运行中。 第 5 行声明 XHR 操作无法成功完成时调用的函数。 第 7 行存储 XHR 对象,成功回调函数作为 loadFile 的第二个参数给出。 第 12 行将参数赋给 loadFile 的调用。从第三个参数开始,收集所有剩余的参数,分配给变量 XHR 的 arguments 属性,传递给成功回调函数 xhrSuccess,最终提供给函数调用的回调函数(在本例中为 showMessage)xhrSuccess。 第 15 行为其第三个参数指定了 true,表示该请求应该被异步处理。 第 16 行实际启动请求。 |
CopyRight 2018-2019 实验室设备网 版权所有 |