1 回答

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
該htmlInput變量在第二個(gè)之后被賦值console.log并被initialisation2調(diào)用。這是因?yàn)镕ileReader是異步的,所以htmlInput直到undefined文件被讀取為止。
將調(diào)用initialisation2移至load回調(diào)中將解決此問(wèn)題:
reader.addEventListener("load", function(e) {
inputFile = e.target.result;
htmlInput = new DOMParser().parseFromString(inputFile, "text/html").documentElement;
initialisation2();
});
我們可以使用模仿文件讀取器異步性的超時(shí)來(lái)復(fù)制正在發(fā)生的情況:
var htmlInput;
function sefunction() {
setTimeout(() => {
htmlInput = "Given htmlInput";
initialisation2(); // logs "Given htmlInput"
}, 1000);
initialisation2(); // logs "undefined"
}
function initialisation2() {
console.log(htmlInput);
}
- 1 回答
- 0 關(guān)注
- 182 瀏覽
添加回答
舉報(bào)