收藏
回答

这段含while语句的代码有啥问题,为什么运行后进入死循环?

xh=1
    that.setData({ dzwcbz: "no" })
    console.log('控制1: ', dzzc[xh])
    console.log('控A: ', that.data.dzwcbz)
     
    while (xh==1) {
        that.SUIPIN() //水平按钮
        if (that.data.dzwcbz == "BBW@"){
          console.log('控B: ', that.data.dzwcbz)
          xh=2
          that.setData({ dzwcbz: "no" })
        }
    }
 
    while (xh == 2) {
      that.JJ() //夹紧按钮
      if (that.data.dzwcbz == "BBW@") {
        console.log('控C: ', that.data.dzwcbz)
        xh = 2
      }
    }
    console.log('控制D: ', dzzc[xh])

以上是代码,其中 that.SUIPIN() //水平按钮 that.JJ() //夹紧按钮 
是蓝牙控制的两只舵机,在蓝牙通讯返回数据
that.data.dzwcbz == "BBW@"单独运行 that.SUIPIN() //水平按钮that.JJ() //夹紧按钮 正常运行 数据返回正确,但是运行以上代码死机, 请大神赐教


最后一次编辑于  09-20
回答关注问题邀请回答
收藏

3 个回答

  • 罗梅光
    罗梅光
    09-20

    while语句和for语句的功能是一样的,当for语句的条件始终满足时会一直执行。

    while (xh == 2) {
        // doSomething
       xh == 2;
       // somethine
    }


    09-20
    赞同
    回复 3
    • 晓睿
      晓睿
      09-20
      xh == 3; 这个改了也不行
      09-20
      回复
    • 罗梅光
      罗梅光
      09-20回复晓睿
      是不是其他地方 xh = 3;
      09-20
      回复
    • 罗梅光
      罗梅光
      09-20回复晓睿
      而且while是循环语句,判断使用 if-else
      09-20
      回复
  • 阿true
    阿true
    09-20

    that.SUIPIN()和that.JJ()会不会是异步执行,万一判断的时候取得是改变之前的值呢?这段代码感觉有点花哨 = =!

    09-20
    赞同
    回复
  • 子不语
    子不语
    09-20


    09-20
    赞同
    回复 14
    • 子不语
      子不语
      09-20
      关键是,你在第一个循环那里,还没改过 that.data.dzwcbz 的值……你想让他什么时候跳出?
      09-20
      回复
    • 子不语
      子不语
      09-20
      你第一个判断永久成立……
      09-20
      回复
    • 子不语
      子不语
      09-20
      你确定控B有打印?或者控D有打印?
      09-20
      回复
    • 晓睿
      晓睿
      09-20回复子不语
      首先谢谢指教,执行 that.SUIPIN() //水平按钮 时,that.data.dzwcbz 的值 改变为 “BBW@"
      09-20
      回复
    • 晓睿
      晓睿
      09-20回复晓睿
      第二段 while 中 xh 的值改为3 还是不行
      09-20
      回复
    查看更多(9)
问题标签