node.js用mysql实现嵌套回复,如何做?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

node.js用mysql实现嵌套回复,如何做?

落地花开啦 2016-02-28 15:57:49 1983

主要还是node异步的问题,代码如下
1
数据结构有点类似嵌套回复,从表A拿到父亲的ID,然后根据父亲的ID查找表B里面的全部子数据,不过因为异步,导致数据能取到,当回调时不知道咋弄,总不能延迟回调函数的调用吧

JavaScript 关系型数据库 MySQL
分享到
取消 提交回答
全部回答(2)
  • willkan
    2019-07-17 18:49:42

    多利用搜索引擎,关键字可以用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)
    })
    0 0
  • 落地花开啦
    2019-07-17 18:49:42
    function (err, b) {
      re.push(b);
      if(i == 0){
        console.log(re);
      }
    }

    另外推荐使用async等第三方工作控制流模块。

    0 0
添加回答
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题