- 当前 Bug 的表现(可附上截图)
我用for 循环里面调用 wx.scanCode 这个方法,这个方法应该是异步调用的。这个时候我调用完 for 循环已经走了好几遍了 。怎么解决?
for (var i = 0; i < 5 ;i++) {
wx.scanCode({
success: (res) => {
wx.showToast({
title: '成功'+i,
icon: 'success',
duration: 2000
}
}
}
}
正常理解是调用5次 wx.scanCode, 不过wx.scanCode是异步调用,我在调用时For 还在跑吧?i一直在加,我调不到5次 怎么解决?请大神赐教,谢谢!
封装成函数,传参在for循环里面调用了
for(let i = 0; i < 5; i += 1){
myScanCode(i);
}
匿名函数是个好东西
感谢各位的帮助,通过你们的回复我受到启发,现在改用指针的方式实现循环了。谢谢各位。
myscanCode: function() {
wx.scanCode({
success: (res) => {
var count = this.data.scanCount;
this.setData({
scanCount: count + 1,
});
if (this.data.scanCount <= this.data.scanCountMax)
this.myscanCode();//重复执行
},
fail: (res) => {},
})
},
封装成函数,传参在for循环里面调用了
for(let i = 0; i < 5; i += 1){
myScanCode(i);
}
这个方法简单
test: function() {
const num = 5
let count = 0
for (var i = 0; i < num; i++) {
wx.scanCode({
onlyFromCamera: true,
scanType: [],
success: function(res) {},
fail: function(res) {},
complete: function(res) {
count++
if (count == num) {
console.log(我执行完了)
}
},
})
}
}
还可以用递归
非要这么骚
楼楼一看就是萌新,给他多拓展拓展知识;吼吼吼