0

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

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

}

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

 let data = A();
 

请各位大大不吝赐教

2019-02-26 提问
3 个回答
0

已采纳

了解下Promise

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

}
0

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

撰写答案

推广链接