关于异步获取数据后,如何return到最外层函数?

在开发小程序时,需定义一个转发事件,将{path: shareId,}返回给最外层函数onShareAppMessage,代码如下:


const onShareAppMessage = (para) => {

    let shareId;

    wx.request({

        url: 'https://xxx/xxx.php',

        data: {para:para},

        success: function (res) {

            shareId = res.data.shareId

        }

    })

    return {

        path: shareId,

    }

}

其中,wx.request就跟$.ajax差不多,但是只能异步获取数据,不能同步,所以return回去的对象{path: shareId}中shareId是undefined。如果将return写在sunccess里,能保证shareId正确赋值,但是不能将对象返回到外层的onShareAppMessage了。请问此问题该如何解决?


首先感谢各位的回答,可能我没表达清楚我的问题。我是要将异步的数据return给外层的函数,不是用promise改变代码格式!


慕桂英3389331
浏览 2002回答 1
1回答

阿波罗的战车

因为结果是异步返回的,所以你不能使用同步的方式-即直接获得结果,所以你不知道该解决获得结果之后的处理过程和这个不能直接获得的结果,之间矛盾。解决的办法是使用callback,将上面提到的得到结果之后需要做的事情放在这个callback里,在得到结果之后执行callback即可。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript