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
        });   

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pchaoda

感谢支持~~~~~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值