使用promise的问题
需求的场景描述(希望解决的问题) 调用手机姿态api时,promise出错 - 希望提供的能力 设备状态改变100后,重新开始计数。 实际验证时,changeItem在100次后,调用了wx.stopDeviceMotionListening,但弹出警告框病点击确定后,有一个changeItem从0开始,但还存在一个101,就是还存在一个changItem并没有置0,接着100往后计数。 请问是promise,then用错了吗? [代码]getReady() {[代码][代码] [代码][代码]var[代码] [代码]that = [代码][代码]this[代码][代码] [代码] [代码] [代码][代码]let timeStart = [代码][代码]new[代码] [代码]Date().getTime();[代码][代码] [代码][代码]that.ff2(timeStart).then([代码][代码]function[代码][代码](va){[代码][代码] [代码][代码]console.log(va)[代码][代码] [代码][代码]},[代码][代码] [代码][代码]function[代码][代码](re){ [代码][代码]//如果超过100次,重新调整[代码][代码] [代码][代码]console.log(re)[代码][代码] [代码][代码]// that.getReady()[代码][代码] [代码][代码]wx.showModal({[代码][代码] [代码][代码]title: [代码][代码]'error'[代码][代码],[代码][代码] [代码][代码]content: [代码][代码]'try again'[代码][代码],[代码][代码] [代码][代码]success(res){[代码][代码] [代码][代码]if[代码][代码](res.confirm){[代码][代码] [代码][代码]that.getReady()[代码][代码] [代码][代码]}[代码][代码]else[代码] [代码]if[代码][代码](res.cancel){[代码][代码] [代码][代码]console.log([代码][代码]'cancel'[代码][代码])[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]})[代码][代码] [代码] [代码]}[代码][代码] [代码] [代码] [代码] [代码]ff2(timeStart){[代码][代码] [代码][代码]let showNum = 0 [代码] [代码] [代码][代码]let posiResult;[代码][代码] [代码] [代码] [代码][代码]let p1 = [代码][代码]new[代码] [代码]Promise([代码][代码]function[代码][代码](resolve, reject){[代码][代码] [代码][代码]if[代码][代码](wx.startDeviceMotionListening){[代码][代码] [代码][代码]wx.startDeviceMotionListening({[代码][代码] [代码][代码]interval: [代码][代码]'normal'[代码][代码],[代码][代码] [代码][代码]success: [代码][代码]function[代码][代码](res){[代码][代码] [代码][代码]console.log([代码][代码]'start motion'[代码][代码])[代码][代码] [代码][代码]console.log(res);[代码][代码] [代码][代码]//let showNum = 0[代码][代码] [代码][代码]let changeItem = 0;[代码][代码] [代码][代码]console.log([代码][代码]'at beginning changeItem is '[代码][代码], changeItem)[代码][代码] [代码][代码]wx.onDeviceMotionChange([代码][代码]function[代码][代码](res){[代码][代码] [代码][代码]changeItem++[代码][代码] [代码][代码]console.log(changeItem)[代码][代码] [代码] [代码] [代码][代码]if[代码][代码](changeItem >= 100){ [代码][代码] [代码][代码]wx.stopDeviceMotionListening({[代码][代码] [代码][代码]fail: [代码][代码]function[代码][代码](res){[代码][代码] [代码][代码]console.log([代码][代码]'stop function failed '[代码][代码], res)[代码][代码] [代码][代码]},[代码][代码] [代码][代码]success: [代码][代码]function[代码][代码](res){[代码][代码] [代码][代码]console.log([代码][代码]"stop device motion listening"[代码][代码])[代码][代码] [代码][代码]console.log([代码][代码]"changeItem is "[代码] [代码]+ changeItem)[代码][代码] [代码] [代码] [代码][代码]posiResult = [代码][代码]false[代码][代码] [代码][代码]console.log([代码][代码]'error, changeItem is '[代码][代码], changeItem)[代码][代码] [代码][代码]reject(posiResult)[代码][代码] [代码] [代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码] [代码] [代码][代码]}[代码][代码] [代码] [代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail: [代码][代码]function[代码][代码](res){[代码][代码] [代码][代码]posiResult = [代码][代码]false[代码][代码] [代码][代码]reject(posiResult)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]return[代码] [代码]p1[代码][代码]}[代码]