onShareAppMessage() { // 生成带场景值的小程序码 entry.generationMiniProgramCode(path, JSON.stringify(param), result => { let o = { title: 'VIP微课,音乐人的在线大学', // path: path + '?scene=' + result.scene, success(res) { console.log('分享success') console.log(res) // 记录用户分享行为 entry.postUserShare(path, result.scene, shareResult => { wx.showToast({ title: '分享成功', icon: 'none', }) }) }, fail(res) { console.log('fail') } } return o }) } |

onShareAppMessage 是要求立即返回一个对象的,不会等待 Promise 的结果。建议你提前把结果存起来,在这个函数直接 return。onShareAppMessage 的函数签名是
(options?: {from: string, options?: any}) => {title?: string, path?: string, imageUrl?: string} | undefined而你写的这个函数的签名是
() => Promise<{title: string, success: Function, fail: Function}>显然是不一样的。
return 后的数据需要另一个异步请求获取,现在情况是一旦onShareAppMessage触发就执行其上一层异步回调。
onShareAppMessage() {// 生成带场景值的小程序码let path ='/pages/index/index'let userId = wx.getStorageSync('USERID');let param = {"userId": userId}let a =newPromise((res, rej) => {entry.generationMiniProgramCode(path, JSON.stringify(param), result => {path = path +'?scene='+ result.scenereturnres(path)})})a.then(path => {console.log(path)return{title:'VIP微课,音乐人的在线大学',// path: path + '?scene=' + result.scene,success(res) {console.log('分享success')console.log(res)// 记录用户分享行为entry.postUserShare(path, 1213, shareResult => {wx.showToast({title:'分享成功',icon:'none',})})},fail(res) {console.log('fail')}}})换成promise的方式也不行。