• 2
  • 新人请关照

回调函数里的变量作为外层函数返回值的问题

学艺不精焦头烂额
代码是多层回调的,例子代码如下

var arr=[];
let A = ()=>{
    //逻辑处理
     B(function(){
            
            C(function(){
                
                 let a = 10;
                 arr.push(a);
            
            })
            
    
    })
    return arr

}

期望得到函数c里的arr作为函数A的返回值,但是因为异步的原因,会先执行return语句,返回undefined

 let data = A();
 

请各位大大不吝赐教

阅读 682
评论
    3 个回答
    • 331

    了解下Promise

     let A =new Promise((resolve,reject) => {
        function B(function(){
           resolve();
        })
    }).then(()=>{
    function C(function(){
                    
        let a = 10;
        arr.push(a);
                
      })
    })
      var arr=[];
      let A = ()=>{
          //逻辑处理
           return B(function(){
                  
                  return C(function(){
                      
                       let a = 10;
                       arr.push(a);
                       return arr
                  })
                  
          
          })
      
      }

        一、用await把异步变成同步形式
        二、手动用promise封装,把返回后的逻辑写到then里
        三、使用回调,把返回后的逻辑通过回调传到内层函数里

          撰写回答

          登录后参与交流、获取后续更新提醒