我有這個XMLHttpRequest並且我想要打印變量contents
...但是外部函數onload
變量contents
是「」。我如何訪問函數外的變量?外部可變外部XMLHttpRequest
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);
這似乎是適用的:http://stackoverflow.com/questions/5485495/how-can-i-take-advantage-of-callback-functions-for-asynchronous-xmlhttprequest – mariocatch
等待異步xhr完成 –
這個問題的一個變體在這裏每天會被問到很多次。您的XHR呼叫是異步的。這意味着響應會在其他代碼執行後的某個時候發生。因此,只有你可以可靠地使用結果的地方是INSIDE'onload'處理器或者你從那裏調用的函數,並將結果傳遞給。你不能在'console.log()'語句的地方同步使用結果。歡迎來到異步編程的世界。你必須以不同的方式編寫代碼。看到你的問題被標記爲許多其他解釋的副本。 – jfriend00