收藏
回答

setData,页面的this传引用,“数据更新延迟??”

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 客户端 6.5.3 2.0.0

1、有这么个需求,页面1和2有个共同的功能需求——从后端中发起请求,然后将获取到的common_data数据通过setData去更新当前页面的值。然后我想抽象成一个函数,但是不知道数据异步还是啥问题(感觉setData操作只能放在要更新的Page中??)。下面的方法都不行耶


2.1、第一种方式思路  我是想将 要更新的页面的this(引用值??)当做该公共函数的 invoker_this 一参数,然后 invoker_this.setData


2.2、第二种方式 在这个公共函数中,将  res.data 作为返回值 返回(无法返回, res 是一种流数据,不是实体还是啥呀??不太懂),但是这两种似乎都存在 “延迟”(就是点击后面一次的显示结果是上一次点击时的应展示的数据了,我很困惑)


3、总之我想到的方式试了都不太行,但是又不想每个页面都分别 请求、setData,这种不便于维护啥的。

以下是 2种方法的代码编写



回答关注问题邀请回答
收藏

1 个回答

  • 痛快科技
    痛快科技
    2019-04-13

    方法写个回调参数,执行完请求之后,执行回调函数。

    function searchResultByKeyword(keyword,cb){

        wx.request({

            success(res){

                cb(res);

            }

        })

    }

    调用方法:

    searchResultByKeyword('abc',function(res){ console.log(res)});

    2019-04-13
    有用
    回复 3
    • .
      .
      2019-04-13

      好了,非常感谢。

      1、那为啥 不可以将 res 复赋值给 return_data 这一个变量,然后 返回 return_data?

      2、像我第一种写法,将 调用者(即另一处页面)的 this 传过来,然后在  sccuess 里面进行 setData() 操作,它会显示上一次的操作结果(“延迟”)这是为啥呀?


      还望解答一下哈~ 因为小程序的底层原理可能不太清楚

      2019-04-13
      回复
    • 痛快科技
      痛快科技
      2019-04-15回复.

      可以提供一个代码片段看一下

      2019-04-15
      回复
    • .
      .
      2019-04-15回复痛快科技

      就是上面写的代码, invoke_this 就是 调用该函数的页面(this值)。我是这样想的,如果能传过来其 页面的 this引用 ,那我是不是 我可以在该函数中进行 invoke_this。setData 操作了? 但关键是 它是能设置成功,但是 是上一次的数据。

      2019-04-15
      回复
登录 后发表内容