2013-03-30 54 views
1

我使用遞歸函數來構造一個包含(URL,兒童,數據)的JSON數據。我將這些數據發送到我的圖形(RGraph庫)以創建它。問題是在我的功能creer_json = (url, nom, recursif, recursif_max)我有一個問題。下面的代碼:如何在繼續執行主函數之前獲取回調函數的結果?

creer_json = (url, nom, recursif, recursif_max) -> 
recursif-- 
resultat = {} 
@tab = [] 
tableau = getBody(url,(error,message) -> 
    @tab = getTab(message.body)) 
tab_children = [] 
tab_relation = [] 
indice = 0 
id_enfant = 1 
adresse = "<h1>Liens de "+url+"</h1>" 
while indice < tab.length 
    if (recursif == recursif_max-1) 
     id_urlfils = id_enfant 
    else 
     id_urlfils = nom+"."+id_enfant 
    adresse = adresse+" "+"<li>"+id_urlfils+" : "+"<a href="+tab[indice]+">"+tab[indice]+"</a></li>" 
    indice++ 
    id_enfant++ 
tab_relation.push("<ul>"+adresse+"</ul>") 
id_url = 1 
i = 0 
while i < tab.length 
    if (recursif == recursif_max-1) 
     id_urlfils = id_url 
    else 
     id_urlfils = nom+"."+id_url 
    if recursif >= 0 
     json2 = creer_json(tab[i], id_urlfils, recursif, recursif_max) 
     tab_children.push(json2) 
    i++ 
    id_url++ 
resultat = 
    id : nom 
    name : nom 
    children : tab_children 
    data : { relation: tab_relation } 
return resultat 

我的問題是,我需要第四個指令的結果繼續主要功能:

tableau = getBody(url,(error,message) -> 
    @tab = getTab(message.body)) 

@tab包含一個網站的所有URL和我有循環在他們身上構建JSON數據。 主要功能繼續沒有@tab的結果,我需要這些數據!我的問題可能並不明確,所以如果你不明白,請不要猶豫,問我。預先感謝您的時間。

+1

主函數應該作爲'getTab'函數的回調來執行 – Eru

回答

0

正如Eru寫道:如果你需要異步調用的結果,你必須繼續回調。您無法重新同步異步呼叫。這也意味着你不能從creer_json返回任何有用的東西。相反,如果你需要返回值,你必須添加一個回調參數來獲取返回值。更重要的是,因爲creer_json將成爲異步函數,並且您遞歸調用它,所以這些遞歸調用需要使用回調函數。

相關問題