onUpdate: function (e) {
var orderInfoList = this.data.orderInfoList;
var checked = true;
for(var i=0; i<orderInfoList.length; i++) {
if (orderInfoList[i].selected) {
if (orderInfoList[i].orderSize > orderInfoList[i].stockQuantity) {
wx.showToast({
icon: "none",
title: '商品库存数量不足哦',
})
}
wx.cloud.callFunction({
name: 'updateOrderByOrderID',
data: {
orderID: orderInfoList[i].orderID
}
}).then(async function (res){
// 商品表 库存数-订单数
console.log(orderInfoList[i].productID + "商品表 库存数-订单数")
wx.cloud.callFunction({
name: 'updateProductByID',
data: {
productID: orderInfoList[i].productID,
// 库存数 - 订单数
stockQuantity: orderInfoList[i].stockQuantity - orderInfoList[i].orderSize,
}
}).then(res =>{
wx.navigateTo({
url: '../order'
})
}).catch(err =>{
wx.showToast({
icon: "none",
title: '更新商品表失败',
})
})
}).catch(err =>{
wx.showToast({
icon: "none",
title: '更新订单表失败',
})
})
checked = false;
}
}
if (checked) {
wx.showToast({
icon: "none",
title: '要先选中商品哦',
})
}
}
看下js的闭包循环问题; 将var i= 1;=》let i= 1
宏任务跑完才跑微任务,所以肯定是for全部跑完才进入promise的回调,所以在回调里拿到的i的值就一直是i跳出for循环那一刻的值
你可以加一个断点跟踪调试看看
if条件没满足,满足的时候已经不是第一次了吧
没太看懂你的问题 能说详细点吗?