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

学艺不精焦头烂额
代码是多层回调的

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

var arr=[];
let A = ()=>{
    //逻辑处理
     B(function(){

            C(function(){

                 let a = 10;
                 arr.push(a);

            })


    })
    return arr

}

 let data = A();

希望各位大大不吝赐教,在此谢过了

已用promise和async解决
let A =>(){
return new Promise(resolve,reject)=>{

B(function(){
resolve(所需的变量);
}).then((res)=>{

return new Promise((resolve,reject)=>{
res.C(function(){
//逻辑处理
resolve(arr)

       })

})
})
}
}

let D=> async (){
let value = await A()
console.log(value)

}

需要一层一层的向上回调,任何一层都不能用return返回

var arr=[];
let A = (f)=>{
    //逻辑处理
    function B(function(){

            function C(function(){

                 let a = 10;
                 arr.push(a);
                 f(arr)
            })
    })
}
A(function (n) {
    let data = n;
});

楼主立即执行函数没写对,改成下面:

var arr=[];
let A = ()=>{
    //逻辑处理
     (function B (){

            (function C (){

                 let a = 10;
                 arr.push(a);

            })()


    })()
    return arr

}

 let data = A();

本人最近建立了开源项目usuallyjs,非常欢迎楼主一起交流,github地址:https://github.com/JofunLiang/usuallyjs,别忘了start哦.