1、有这么个需求,页面1和2有个共同的功能需求——从后端中发起请求,然后将获取到的common_data数据通过setData去更新当前页面的值。然后我想抽象成一个函数,但是不知道数据异步还是啥问题(感觉setData操作只能放在要更新的Page中??)。下面的方法都不行耶
2.1、第一种方式思路 我是想将 要更新的页面的this(引用值??)当做该公共函数的 invoker_this 一参数,然后 invoker_this.setData
2.2、第二种方式 在这个公共函数中,将 res.data 作为返回值 返回(无法返回, res 是一种流数据,不是实体还是啥呀??不太懂),但是这两种似乎都存在 “延迟”(就是点击后面一次的显示结果是上一次点击时的应展示的数据了,我很困惑)
3、总之我想到的方式试了都不太行,但是又不想每个页面都分别 请求、setData,这种不便于维护啥的。
以下是 2种方法的代码编写
方法写个回调参数,执行完请求之后,执行回调函数。
function searchResultByKeyword(keyword,cb){
wx.request({
success(res){
cb(res);
}
})
}
调用方法:
searchResultByKeyword('abc',function(res){ console.log(res)});
好了,非常感谢。
1、那为啥 不可以将 res 复赋值给 return_data 这一个变量,然后 返回 return_data?
2、像我第一种写法,将 调用者(即另一处页面)的 this 传过来,然后在 sccuess 里面进行 setData() 操作,它会显示上一次的操作结果(“延迟”)这是为啥呀?
还望解答一下哈~ 因为小程序的底层原理可能不太清楚
可以提供一个代码片段看一下
就是上面写的代码, invoke_this 就是 调用该函数的页面(this值)。我是这样想的,如果能传过来其 页面的 this引用 ,那我是不是 我可以在该函数中进行 invoke_this。setData 操作了? 但关键是 它是能设置成功,但是 是上一次的数据。