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

买辣椒也用券
  • 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();
 

请各位大大不吝赐教

回复
阅读 1.5k
3 个回答
✓ 已被采纳

了解下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里
三、使用回调,把返回后的逻辑通过回调传到内层函数里

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏