我正在給我的JavaScript的第一步,並試圖瞭解它是如何工作的。 我遇到了代碼執行順序的問題。Javascript執行代碼順序
var Parsed = [[]]
var txtFile = new XMLHttpRequest();
alert("Trying to open file!");
txtFile.open("GET", "http://foo/f2/statistics/nServsDistrito.txt", false);
txtFile.onreadystatechange = function() {
if (txtFile.readyState === 4) { // Makes sure the document is ready to parse.
if (txtFile.status === 200) { // Makes sure it's found the file.
alert("File Open");
allText = txtFile.responseText;
Parsed = CSVToArray(allText, ",")
}
}
}
txtFile.send(null);
alert("Job Done");
問題是「作業完成」首先出現比「文件打開」。
但是該文件具有「作業完成」警報之後的代碼所需的信息。 我改變了「獲取」請求的異步部分,但沒有奏效。
當文件打開並且檢索到信息時,我能做些什麼來支持所有代碼? 當文件被打開和解析時,我可以使用readyState來停止代碼嗎?
感謝您的幫助。
更新:它現在可以工作,感謝所有。
XMLHttpRequest是**異步**,open將與您的函數並行執行(並且當您的函數完成其作業以保持您的代碼「單線程」時,將執行onreadystatechanged)。 – 2013-05-02 09:09:51
將最後3個'}'移到最下面。 – C5H8NNaO4 2013-05-02 09:12:04
如果請求是同步的,那麼事件處理程序的用途是什麼?在'.send'和'alert(done)'之間移動事件處理程序中的代碼' – 2013-05-02 09:14:23