[微信小程序]for循环请求为什么打印的i一直为3 [你想表达什么意思?]


callback: function (items) {
  for (var i = 0; i < items.length; i++) {
    var tonken = wx.getStorageSync('token');
    wx.request({
      url: 'http://api.hnlzqs.com/list_structure_img_position', // 仅为示例,并非真实的接口地址
      method: 'POST',
      data: {
        structureImgId: items[i].id
      },
      header: {
        appId: 'RAw2ahP5lCGUEDv',
        VERSION: '1.0',
        token: tonken,
        'Content-type': 'application/json;charset=utf-8' // 默认值
      },
      success(res) {
        dw(res.data.items);
      }
    })
    function dw(res){
      console.log(i)
    }
     
  }
 
},


  • (function (i){     // 请求接口放这里 })(i) 缓存也放在里面  最直接的方法就是 吧  var i  =  let i , 你猜你猜
    • 谢谢,这个方法可以, 快试试看
  • 循环里面的wx.request是同时发送多个请求, 你在异步回调里面打印i, 当然可能相同值呀 , 我读书少,不知道你在说什么。
    • 有什么办法解决吗?, 一会我想想。
  • success回调里复用该方法就可以了 不要循环 data: {   successNum: 0 },   function test(){   wx.request({     success(){       this.data.successNum ++;       this.test();     }   }) } , 说的貌似很有深意,你能一条一条说么?
    • successNum 改变值的方式 自己调整下  我是为了方便你看 随便写了, 不信绝对不信
    • 自己设置  i++吗?, 好的思密达
    • 额  你可以在调用 request 时 做判断 从你要遍历的数组的第一个开始 每成功一次 变量加一 然后根据变量 判断要用数组哪个元素去再次调用 该函数 直到变量和数组长度相同 不再发送请求 , 这个问题其实很复杂
  • 因为循环完了request请求的回调才会执行。, 我想和你认真聊天的。
  • 大概是因为异步吧, 服从命令听指挥。