同步和异步请求

示例:创建一个标准的方法来读取外部文件

在一些需求情况下,必须读取多个外部文件。这是一个标准的函数。该函数使用 XMLHttpRequest 对象进行异步请求。而且可以为每个文件读取完成后指定不同的回调函数。

jsfunction 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);

}

用法:

jsfunction 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 © 2088 世界杯点球_2022世界杯亚洲预选赛 - ktllb.com All Rights Reserved.
友情链接