JS采用Promise方式获取回调函数的返回值

        function A(params, callback){
            callback(params+1)
        }
        function B(num1){
            A(num1, (num)=>{
                return num;
            });
        }
        let a = 3;
        let num = B(a);
        console.log(num)   //undefined

上面这段代码,B函数调用了A函数,A函数接收一个参数和一个回调函数,A的回调函数返回了num,但是在外层console的num却是undefined

一种方法是讲后续的操作都放在A的回调函数里

        function A(params, callback){
            callback(params+1)
        }
        function B(num1){
            A(num1, (num)=>{
                console.log(num)  //4
            return num;
            });
        }
        let a = 3;
        let num = B(a);
        //console.log(num)

但是这样B函数就很难复用

还可以采取返回Promise的办法

        function A(params, callback){
            callback(params+1)
        }
        function B(num1){
            return new Promise((resolve, reject)=>{
                        A(num1, (num)=>{
                            console.log(num) //4
                            resolve(num)
                        })
                    })
            
        }
        let a = 3;
        let num = B(a).then((data)=>{
            console.log(data)    //4
        });   

 

你可能感兴趣的:(前端,javascript,回调函数)