在JavaScript中想讓一個函數執行完畢之后再執行下一個函數?


先說結論:

首先,JavaScript是解釋性語言,本來就是順序執行的!!

所以,如果發現有一段js代碼總是在一段代碼之前就執行完了,比如說報了null異常,那么有可能是回調函數的異步機制造成的。

此種情形下解決的方法是,把要執行的函數放在回調函數內部就可以了。

舉個栗子

例如用JQuery Ajax 的 $.getJSON 方法:

 

$(function () {
$.getJSON("url", function (res) {
$("#myDiv").append("<div id = "divId">"+res.name+"</div>");
}
});
$(function(){
var a = document.getElementById("divId");
console.log(a.innerHTML);
});

 

這種情況下結果是null,這就是因為第二個函數會在第一個含有回調函數的函數執行完畢之前就開始執行了,還沒等append()方法執行,所以結果為空。那么把第二個方法放入回調方法內

$(function () {
$.getJSON("url", function (res) {
$("#myDiv").append("<div id = "divId">"+res.name+"</div>");
printA();
}
});
function printA(){
var a = document.getElementById("divId");
console.log(a.innerHTML);
}

  

結果為res.name


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM