收藏
回答

执行顺序快慢问题你们怎么处理的?


页面使用bindchange='personName2',接着再点击bindtab='addList'它的执行顺序竟然是addlist执行完成再进行请求处理,遇到这种情况你们会怎么处理的

personName2: function(e) {

config.doGetRequest(url, options).then((res) => {

console.log(res)

})

},

addList: function() {

var lists = this.data.lists;

var newData = {};

lists.push(newData);

}


最后一次编辑于  09-18  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

3 个回答

  • 天道酬勤
    天道酬勤
    09-18


    这其实是一个很简单的异步问题,wx.request是异步请求,JS不会等待wx.request执行完毕再往下执行,所以JS按顺序会先执行this.loadMyData(),等服务器返回数据以后,loadMyData()早就执行完了,当然也就没有拿到值啦。

    其实我们在同步流程中才说“返回”,异步没有“返回”这个概念(或者说异步返回是没有意义的),异步对应的是“回调”,也就是说,对于一个异步函数,我们应该传入一个“回调函数”来接收结果。


    09-18
    赞同 2
    回复 4
    • Hutool
      Hutool
      09-18
      我先介绍一下上面代码实现的功能吧。如上图加号是addlist添加input框,change就是异步请求拿到人员名称的,如果按你上面所说异步请求拿到回调函数再调用addlist没错,解决了我现在的问题,但是如果我执行addlist(增加输入框)我还要等回调函数吗
      09-18
      回复
    • Hutool
      Hutool
      09-18
      可能我js尚浅,多多指教
      09-18
      回复
    • Hutool
      Hutool
      09-18
      想通过change异步请求拿到人员名称,显示在右边,再可以点击addlist增加input框,但一开始的时候先要添加输入框(也就是我有、先要点击addlist,再输入工号获取名称)
      09-18
      回复
    • 天道酬勤
      天道酬勤
      09-19回复Hutool
      拿拿完数据在 setData毁掉函数中 新增input
      09-19
      回复
  • 香蕉不是笨啦啦
    香蕉不是笨啦啦
    09-18

    建议补js基础

    09-18
    赞同
    回复 1
    • Hutool
      Hutool
      09-18
      嗯,在js里面打滚着
      09-18
      回复
  • 淳祖军
    淳祖军
    09-18

    先把addList的结果保存下来,等change执行完之后,再setData

    09-18
    赞同
    回复 2
    • Hutool
      Hutool
      09-18
      但我想在lists.push(newData);阻止它执行,等change执行完再执行喔
      09-18
      回复
    • Hutool
      Hutool
      09-18
      或者能不能change先执行完成再进行addlist处理呢
      09-18
      回复
问题标签