如何在递归中,操作完成才返回数据?
发布于 10 年前 作者 ilovelll 5822 次预览 最后一次回复是 10 年前 来自 问答
function formatData(err, data, pid) {
db.execSQL(
'SELECT id FROM category WHERE pid = ?',
[pid], function (err, result) {
for(var j in result) {
data.push(result[j].id)
}
if(result.length>0) {
for(var i in result){
formatData(err, data, result[i].id);
}
}
}
);
return data;
}
db.execSQL为封装的数据库操作,第一个参数是sql语句,第二个是sql参数,第三个为回调函数 如何在所有递归操作完成之后才返回数据?
7 回复
return 上移两行
1楼大神能解释下不? 感觉挺抽象的 @dayuoba
这样的结构是不行的,至少要使用 callback
sorry,我没仔细读代码, 你得写流程控制,所有的任务执行完毕之后,把data传给callbak,
callback(data)用 async
promise 封装后异步控制就很简单了
callback是必须的