收藏
回答

大学里没学好,实战经验少。怎么解决同步的问题啊?当return后,还是要执行后面的函数,继续发请求?

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

3 个回答

  • 无尾熊
    无尾熊
    2020-06-29

    你可以百度下forEach的原理和如何跳出循环,你的截图代码中forEach里的return只是单纯的跳出单个循环函数,并没有跳出循环体,也没有跳出bingSave,全部改成for循环就没有问题

    2020-06-29
    有用 2
    回复 4
    • 。
      2020-06-29
      那像这种写嵌套的循环,用for循环写,是不是性能要高点呢?大佬
      2020-06-29
      回复
    • 无尾熊
      无尾熊
      2020-06-29回复
      遍历时间:for循环遍历 < for...of遍历 <  forEach遍历  <  for...in遍历 < map遍历,希望帮到你:https://blog.csdn.net/qq_24357165/article/details/82748976
      2020-06-29
      回复
    • 。
      2020-06-29
      帮助到我了!~您的头像和我的前男友一样
      2020-06-29
      回复
    • 2020-06-30回复
      会不会就是你前男友哈哈哈哈
      2020-06-30
      回复
  • 俊杰Hiro
    俊杰Hiro
    2020-06-29

    你这里的return只是结束了最里面的forEach的单次循环而已,所以没有达到你的期望,而且这样写性能也不好。

    2020-06-29
    有用 1
    回复 1
    • 。
      2020-06-29
      那当遇到这种情况,怎么写嵌套的循环,性能才高呢??大佬
      2020-06-29
      回复
  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2020-06-29

    弹框了就不执行 request,不弹框才执行request是吧

    async bindSave(){
        var t = this, flag = await ()=>{
            return new Promise((rs, rj)=>{
                let find = false
            for(var i in list1=t.data.objlist){
                if(find) break
                for(var k in list2=t.data.personalinfolist){
                    if(list1[i].placeholder == list2[k].placeholder){
                        find = true
                        break
                    }
                }
            }
                rs(find)
            })
        }
        if(flag){
            wx.showToast(...)
        }else{
            request(...)
        }
    }
    

    若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人

    2020-06-29
    有用 1
    回复 3
    • 。
      2020-06-29
      find 是 flag吗???大佬你是不是打错这个了呀呀
      2020-06-29
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2020-06-29回复
      没打错呀
      有报错???
      2020-06-29
      回复
    • 。
      2020-06-30
      对的对的 谢谢大佬
      2020-06-30
      回复
登录 后发表内容
问题标签