【发布时间】:2016-02-09 06:36:05
【问题描述】:
我有这个 XMLHttpRequest,我想打印变量 contents... 但在函数 onload 之外,变量 contents 是“”。如何访问函数外部的变量?
var xhr = new XMLHttpRequest();
var contents = ""
xhr.open("GET", fileURL);
xhr.responseType = "arraybuffer";
xhr.onload = function () {
if (this.status === 200) {
var blob = new Blob([xhr.response], {type: "application/pdf"});
var objectUrl = URL.createObjectURL(blob);
alert("sucess")
var reader = new FileReader();
reader.readAsBinaryString(blob);
reader.onload = function(e) {
contents = e.target.result;
}
}
else {
alert("insucess");
}
};
xhr.send();
console.log(contents);
【问题讨论】:
-
等待异步 xhr 完成
-
这里每天都会多次询问这个问题的变体。您的 XHR 调用是异步的。这意味着响应发生在您的其余代码执行之后的某个时间。因此,您可以可靠地使用结果的唯一位置是在
onload处理程序内部或您从那里调用并将结果传递给的函数中。您不能在console.log()语句所在的位置同步使用结果。欢迎来到异步编程的世界。您必须以不同的方式编写代码。请参阅标记为重复的问题以了解许多其他解释。
标签: javascript http get xmlhttprequest httprequest