收藏
回答

小程序js的线程执行。怎么调整?

后台返回数据给 res ,想着先for循环 在setData 。

现在的问题是:for循环还在执行呢。已经setData了。导致前台获取不到数据,这种情况如何解决呢



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

4 个回答

  • A晨露夕逝(999+)
    A晨露夕逝(999+)
    2019-10-21

    最简单做法就是你在for循环体里那个函数(获取距离函数)里面最后一行

    res[i].distance=callback后面加个if(i>=4) that.setData不就ok了么

    2019-10-21
    有用 1
    回复 1
    • 老张
      老张
      2019-10-21
      此时,并不能保证i==0的for已经得到了数据。
      2019-10-21
      回复
  • 老张
    老张
    2019-10-21

    计算两点距离也会异步吗?

    2019-10-21
    有用 1
    回复 5
    • Mr丶
      Mr丶
      2019-10-21
      腾讯地图api 要返回结果只能使用Promise。这样咋解决呢
      2019-10-21
      回复
    • 老张
      老张
      2019-10-21回复Mr丶
      改成async/await就好了。
      2019-10-21
      回复
    • Mr丶
      Mr丶
      2019-10-21
      我这个项目不支持es7 还有其他方法嘛
      2019-10-21
      回复
    • 老张
      老张
      2019-10-21回复Mr丶
      setData写在for的回调里,渲染i次。
      2019-10-21
      回复
    • 老张
      老张
      2019-10-21回复Mr丶
      另,有方案可以实现es5使用async/await。
      2019-10-21
      回复
  • 望
    2019-10-21

    用 Promise.all() 试试呢

    2019-10-21
    有用
    回复
  • 少年啦
    少年啦
    2019-10-21

    这个问题出在你进行for循环的地方 你在这里执行了一个promise

    2019-10-21
    有用
    回复 3
    • Mr丶
      Mr丶
      2019-10-21
      那怎么解决呢。
      2019-10-21
      回复
    • 少年啦
      少年啦
      2019-10-21回复Mr丶
      取到一个设置一下data 这种可能会影响性能
      2019-10-21
      回复
    • 少年啦
      少年啦
      2019-10-21回复少年啦
      使用async、await吧  小程序现在支持 不过我没用过
      2019-10-21
      回复
登录 后发表内容
问题标签