主要还是node异步的问题,代码如下
数据结构有点类似嵌套回复,从表A拿到父亲的ID,然后根据父亲的ID查找表B里面的全部子数据,不过因为异步,导致数据能取到,当回调时不知道咋弄,总不能延迟回调函数的调用吧
多利用搜索引擎,关键字可以用node 异步处理
, 可以参考 https://www.jianshu.com/p/161f1c49ab34
对于本问题的例子关键点在于想用同步的方式(代码顺序执行)等待异步的响应,对于callback形式的异步响应,要想精确知道异步请求结束只能在外部调用传入callback,例如
//定义函数
function test(cb) {
const map = {} //暂存异步响应
for (let i = 0; i < 4; i++) { //注意这里声明是let不是var
query("select * from t1 where id = " + i, (err, data) => {
if (err) return cb(err)
map[i] = data
//判断是不是4个异步请求都结束了
if (Object.keys(map).length === 4) {
return cb(null, map)
}
})
}
}
//调用函数
test((err, data) => {
//当所有异步请求结束或者某个请求出错会进入到这个函数里
if (err) return console.error("test failed:", err)
console.info("test data = ", data)
})
function (err, b) {
re.push(b);
if(i == 0){
console.log(re);
}
}
另外推荐使用async等第三方工作控制流模块。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。