【发布时间】:2021-06-26 20:57:20
【问题描述】:
我有一个看起来像这样的函数:
async function convertExamples(data,path,urlParameters) {
urlParameters='h'
for (var k in data) {
if (typeof data[k] == "object" && data[k] !== null)
return await convertExamples(data[k], path+'.'+k, urlParameters);
else {
return urlParameters + path+'.'+k + '=' + data[k] + '&';
}
}
return urlParameters;
}
如您所见,它是递归的(它在第 4 行自行运行)。
它所做的只是遍历一个嵌套对象以获取最后的值,并将它们添加到一个 url 字符串中。
let urlParameters = await convertExamples(data,'gui','?');
console.log('finished url parameters:',urlParameters);
现在它似乎不起作用,因为 urlParameters 仍然等于 ?最后。
我怎样才能让程序等待convertExamples() 函数完成(包括从自身内部运行的每个实例),然后再继续?
我尝试在调用它之前添加await,但似乎没有任何改变。
如果可能,我宁愿避免承诺。
【问题讨论】:
-
哎呀,忘了你必须标记语言,javascript!
标签: javascript asynchronous recursion async-await promise