2012-11-10 62 views
-4

我在JavaScript中有3種方法,我想一個接一個地調用,也就是說按順序。以訂單方式致電javascript方法

recuperer_from_proposer_liste_idchamp(); 
nombre_etape(); 
+5

所以有什麼問題嗎? – onemach

+0

只要你沒有一些異步的魔法,它們就是按順序運行的。再說一遍:問題是?... – akluth

+0

我該怎麼辦,因爲它們被稱爲異步。 –

回答

1

除非有任何異步調用(例如AJAX請求),否則這些方法將按照您輸入的順序運行。

JavaScript解釋器一行一行地執行命令。

如果您有異步調用,那麼需要使用回調函數來處理這些調用。如果你不明白回調是如何工作的,那麼有很多guides online

+0

不,我在 –

+0

@AzeazeAzeaze中使用sqlite這與您的問題或我的答案沒有關係。 – Jivings

+1

@Jivings:我認爲大多數JS SQLite API是異步的 – ThiefMaster

0

如果你確實做了一些異步的事情,你必須找出方法完成工作的時間。所以調用方法1:然後

method1(); 

方法1需要告知我們它的結束的行動和它必須調用一個方法叫做method1_finished然後調用方法2:

method1_finished() { 
    method2(); 
} 

也是一樣對於方法3:

method2_finished() { 
    method3(); 
} 

根據其中代碼來自哪裏需要回調,你往往能夠直接定義一個匿名函數:

xmlhttp.onreadystatechange = function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     // call succeeded, now go on to the next step 
    } 
} 
xmlhttp.open("GET","someurl.php",true); 
xmlhttp.send(); 
+0

thnak你的幫助:) –

+0

不客氣,我希望你能夠讓你的代碼運行。 –

0

您可能需要你的邏輯改變這樣的事情

function getRowsFromDatabase(callback) { 
    // do your fancy database connection 
    // and data retrieval here 

    // when you're ready, call the registered callback 

    if(typeof(callback) == "function") { 
     callback(rowsRetrieved); 
    } 
} 


function displayRowsOnScreen() { 
    getRowsFromDatabase(function(rows){ 
     // do the dom magic here 
    }) 
} 
相關問題