讓我們想象,我有一些代碼:寫一個函數回調
var someString = "";
function do1(){
doA();
doB();
}
function doA(){
// some process that takes time and gets me a value
someString = // the value I got in prior line
function doB(){
//do something with someString;
}
什麼是確保somestring由DOB定義嘗試使用它的正確方法?我認爲這是一種需要回調的情況,但我不確定如何設置它?
究竟什麼是「一些過程時間」?它是異步的,即函數在完成之前是否返回? – Ryan
我想我有點困惑。我知道如果代碼是異步的(例如使用ajax的東西),我會需要一個解決方案,但是在任何情況下doB都可以在doA之前執行,因爲doA非常慢(即一些巨大的循環),或者代碼總是一行一行地運行,除非一行是異步的? – COMisHARD
好吧。如果它是異步的,它將不會逐行運行。如果您在doA()內部進行ajax調用,它很可能是異步的(不要將async設置爲false)。如果doA()中有一個巨大的循環,它會將someString設置爲doB()之前仍會運行的內容。但是如果發生大的循環,你可能想看看webworkers,這將允許你做多線程。 – Thomas