我使用递归函数来构造包含(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的结果,我需要那些数据!我的问题可能不明确,所以如果你不理解,请不要犹豫,问我。提前感谢您的时间。
答案 0 :(得分:0)
正如Eru所写:如果你需要异步调用的结果,你必须继续回调。您无法重新同步异步调用。这也意味着您无法从creer_json
返回任何有用的内容。相反,如果需要返回值,则必须添加一个回调参数,该参数获取传递的返回值。更重要的是,由于creer_json
将成为异步函数并且您以递归方式调用它,因此这些递归调用需要使用回调。