javascript 如何再執行完一個函式後再執行下一個函式
阿新 • • 發佈:2018-11-11
先說結論:
首先,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); }
此部落格是傳自https://blog.csdn.net/qq_23067521/article/details/73456647
很感謝這位部落格主,他解決了困擾我很久的一個問題。