嵌套在forEach函数中的异步瀑布

时间:2019-09-18 08:03:30

标签: javascript node.js async-await workflow waterfall

我是Node.js新手。我使用嵌套在forEach函数中的异步瀑布,该函数嵌套在另一个async.waterfall函数中。我真的不知道为什么该功能的工作流程会像这样显示我。任何人都可以解释和帮助我。

function check_Async () {
  async.waterfall([
    function (callback){
      console.log('------- Function 1 --------')
      setTimeout(() => {
        callback(null, 'Result function 1')
      },100)

    },
    function(result,callback){
      console.log('------- Function 2 --------')
      let array1 = [1,2,3]
      array1.forEach((index) => {
        async.waterfall([
          function(callback){
            console.log('-------- Sub Function 2-1 -----')
            setTimeout(() => {
              callback(null, 'Result function 2-1')
            },100)
          },
          function(result,callback){
            console.log('-------- Sub Function 2-2 -----')
            setTimeout(() => {
              callback(null, 'Result function 2-2')
            },100)
          },
          function(result,callback){
            console.log('-------- Sub Function 2-3 -----')
            setTimeout(() => {
              callback(null, 'Result function 2-3')
            },100)
          }
        ], (err, result) => {
          console.log('Result sub function')
        })
        })
        callback(null,1)
    },
    function(result,callback){
      // console.log({result2: result})
      console.log('------- Function 3 --------')
      setTimeout(()=> {
        callback(null,'Result function 3')
      },100)
    }
  ],(err,result) => {
    if(err) console.log(err)
    console.log('=> Result parent function')
  })
}

我希望函数的输出为: '------- Function 1 --------' '------- Function 2 --------' '-------- Sub Function 2-1 -----' '-------- Sub Function 2-2 -----' '-------- Sub Function 2-3 -----' 'Result sub function' '-------- Sub Function 2-1 -----' '-------- Sub Function 2-2 -----' '-------- Sub Function 2-3 -----' 'Result sub function' '-------- Sub Function 2-1 -----' '-------- Sub Function 2-2 -----' '-------- Sub Function 2-3 -----' 'Result sub function' '------- Function 3 --------' '=> Result parent function'

,但实际输出为: '------- Function 1 --------' '------- Function 2 --------' '-------- Sub Function 2-1 -----' '-------- Sub Function 2-1 -----' '-------- Sub Function 2-3 -----' '------- Function 3 --------' '-------- Sub Function 2-2 -----' '-------- Sub Function 2-2 -----' '-------- Sub Function 2-2 -----' '=> Result parent function' 'Result function 2-2' '-------- Sub Function 2-3 -----' 'Result function 2-2' '-------- Sub Function 2-3 -----' 'Result function 2-2' '-------- Sub Function 2-3 -----' 'Result sub function' 'Result sub function' 'Result sub function'

0 个答案:

没有答案