开发者社区> 问答> 正文

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

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

展开
收起
落地花开啦 2016-02-28 15:57:49 3149 0
2 条回答
写回答
取消 提交回答
  • 多利用搜索引擎,关键字可以用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)
    })
    2019-07-17 18:49:42
    赞同 展开评论 打赏
  • 喜欢技术,喜欢努力的人
    function (err, b) {
      re.push(b);
      if(i == 0){
        console.log(re);
      }
    }

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

    2019-07-17 18:49:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像