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

私の問題は、メイン関数を続行するために 4 番目の命令の結果が必要なことです。

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

@tab には Web サイトのすべての URL が含まれており、それらをループして JSON データを作成する必要があります。メイン関数は @tab の結果なしで続行され、そのデータが必要です! 私の問題は明確ではないかもしれませんので、理解できない場合は遠慮なく私に尋ねてください。よろしくお願いいたします。

4

1 に答える 1

0

Eru が書いたように: 非同期呼び出しの結果が必要な場合は、コールバックを続行する必要があります。非同期呼び出しを再同期することはできません。これは、 から有用なものを返すことができないことも意味しますcreer_json。代わりに、戻り値が必要な場合は、渡された戻り値を取得するコールバック パラメータを追加する必要があります。さらに、creer_json非同期関数になり、再帰的に呼び出すため、これらの再帰呼び出しはコールバックを使用する必要があります。

于 2013-05-24T19:00:41.167 に答える