收藏
回答

小游戏开放数据域的postMessage缺少一个Callback机制

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小游戏 需求 开放数据域 客户端 6.6.2 1.9.94

我理解并且明白开放数据域的作用和设定,但希望可以提高一下即时性。


- 需求的场景描述(希望解决的问题)

文档【展示关系链数据】章节

按文档所展示的例子,主域没有办法知道开放数据域什么时候读取完成好友分数数据并且已经绘制到sharedCanvas上。

这样的设定,恐怕只能在小游戏一启动后就要将好友的游戏分数数据读取好,并且将数据排好顺序渲染到sharedCanvas上,没有了即时性。

不然主域怎么知道开放数据域已经准备好了sharedCanvas的内容?毕竟没有开放数据域主动通知主域的这个机制。


- 希望提供的能力

希望主域里调用开放数据域的postMessage方法的时候,能传一个回调也好,返回一个Promise也好,希望可以让主域知道开放数据域已经将sharedCanvas准备好了可以使用了。

这样也不会有敏感数据泄漏的问题吧?

// 主域

let openDataContext = wx.getOpenDataContext();


// 回调形式

openDataContext.postMessage('rankLink', ()=>{

});


// 或 Promise形式

openDataContext.postMessage('rankLink').then().catch();


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

5 个回答

  • 小程序/小游戏开发-Link
    小程序/小游戏开发-Link
    2018-04-17

    你好,这个需求我们此前已经经过深度讨论,得出有数据泄漏风险的结论,所以暂不考虑支持。


    2018-04-17
    有用
    回复 1
    • 小德
      小德
      2018-11-06

      那能给个事件机制告诉主域“开放域已经绘制完毕了”吗?

      不然什么时候算完只能靠蒙。又不用传数据过来。

      老板们又总是问爱为什么不能......

      2018-11-06
      回复
  • 人工智什么
    人工智什么
    04-17

    是的,这个问题导致我这边排行榜加载总是不顺畅,关注

    04-17
    有用
    回复
  • 我家有拖拉机🚜
    我家有拖拉机🚜
    2018-04-19

    遇到同样的问题,暂时用比较笨的办法:定时器,逐个延时访问共享画布,获取绘制好的内容,体验确实不太好。

    可以提供一个确定的消息(或信号),供开放数据域调用,主域接收。这样不会有消息泄露的风险。

    2018-04-19
    有用
    回复
  • 老年人
    老年人
    2018-04-19

    我也想要个回调,,因为我的工程需要画2个排行榜,然而公共画布只有一个,而且没有回调。。导致有时候第一个画布已经画完了还要等很久才能画第二个。

    2018-04-19
    有用
    回复
  • 🤖
    🤖
    2018-04-17

    //主域

    openDataContext.postMessage(data, callback_A)


    你们在开放数据域外拦截主域传进来的callback_A,微信内部提供一个新的callback_B给开放数据域调用,当callback_B被调用,就在开放数据域外调用开发者提供的callbackA


    这样可以吧


    2018-04-17
    有用
    回复
登录 后发表内容