Javascript expressjs中的async.瀑布方法

Javascript expressjs中的async.瀑布方法,javascript,node.js,express,node-async,Javascript,Node.js,Express,Node Async,问题: 我使用express.js从数据库中获取数据并以json格式显示 但是当在node js中运行代码时,会显示一个空的ArrayGantResult,当我再次刷新浏览器时,就会得到所需的结果 所以,我使用这个方法来顺序执行我的代码,但同样的问题仍然存在 请指教 var ganttresult= new Array(); app.get('/get',cors(), function(request,response) { async.waterfall([ fu

问题:

我使用express.js从数据库中获取数据并以json格式显示

但是当在node js中运行代码时,会显示一个空的ArrayGantResult,当我再次刷新浏览器时,就会得到所需的结果

所以,我使用这个方法来顺序执行我的代码,但同样的问题仍然存在

请指教

var ganttresult= new Array();
    app.get('/get',cors(), function(request,response) {

    async.waterfall([
     function(result) {
    connection.query("SELECT id FROM Gantt",function(err, rows) {
        if (err) {
        console.log('error in fetching  ' + err);   
      }
      else{  
      var all_id=rows;  

      for(var j=0;j<all_id.length;j++){

        connection.query("SELECT id,tailName FROM Gantt where id= '"+all_id[j].id+"'",function(err, rows) {
         if (err) {
        console.log('error in fetching  ' + err);   
      }
      else{  
          var jsonString1=rows;

        var set_id=jsonString1[0].id;


        connection.query("SELECT itemId,name,start,end FROM GanttFlight  where id= '"+set_id+"'",function(err, rows) {
             if (err) {
        console.log('error in fetching  ' + err);   
      }
      else{  
        var jsonString2=rows;
         var gantt1=new Object();
        gantt1.id=jsonString1[0].id;
        gantt1.name=jsonString1[0].tailName;
        var series = new Array();
        if(jsonString2.length>0){   
        for(var i=0;i<jsonString2.length;i++){
         var gantt2=new Object();    
        gantt2.item=jsonString2[i];
        series.push(gantt2);
    gantt1.series=series;

        }
        }
        else{
        gantt1.series=[];
        }


    ganttresult.push(gantt1);

          }    
     });



    }  
     });
     }
    var result= JSON.stringify(ganttresult);
    ganttresult=[];
    response.send('{\"data\":'+result+'}');
    response.end();

     }
     });
    }
     ],   function(err) {
          if(err){
          console.log(err);
          }
        }

);
});

我正在重新编写代码,以便将async.瀑布与async.map正确结合使用 但我在这上面花了太多时间

这就是我所做的


请注意,它并不完整。

我首先看到的两个问题是异步连接周围的for循环。查询调用使用async.map或async.forEach。第二个问题是,您使用async.瀑布的方式是多余的。它没有效果。我必须使用async.瀑布方法所有嵌套方法吗?很抱歉,我无法在函数之间映射数据。是否有其他方法阻止Asynchronous属性