var id1 = null;
var num1 = null
for(var i=0;i<=3;i++){
console.log('开始运行第'+i+'次')
wx.cloud.callFunction({
name:"xiugai",
data:{
name:"123456"
},
success(res){
console.log('第'+i+'次查询还没更新的数据为:'+res.result.data[0].k16)
num1 = res.result.data[0].k16
id1 = res.result.data[0]._id
}
})
wx.cloud.callFunction({
name:"gai",
data:{
id:id1,
num:num1+1
},
success:function(res){
console.log('更新完毕')
},
fail:function(res){
console.log('更新失败')
}
})
}
为什么结果是这样,不应该是先输出开始运行第0次,然后查询数据,再更新数据,重复4次吗,为什么会一开始还没查询数据的时候就先输出了4次开始运行,并且数据也没有被更新,请大佬指点一下
去了解一下async / await 、Promise
var id1 = null; var num1 = null var ps = [] for(var i=0;i<=3;i++){ ps.push((function(i){ return new Promise(async (rs, rj)=>{ console.log('开始运行第'+i+'次') var res = await wx.cloud.callFunction({ name:"xiugai", data:{ name:"123456" } }) num1 = res.result.data[0].k16 id1 = res.result.data[0]._id console.log('第'+i+'次查询还没更新的数据为:', num1) await wx.cloud.callFunction({ name:"gai", data:{ id:id1, num:num1+1 }, success(res){ rs(res) }, fail(res){ rj(res) } }) }) })(i)) ps.length && Promise.all(ps).then(res=>{ console.log('更新完毕', res) }).catch(e=>{ console.log('更新失败', res) }) }
若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人
异步