for循环请求为什么打印的i一直为3
发布于 5 年前 作者 juan89 14585 次浏览 来自 问答
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)
    }
     
  }
 
},
5 回复

(function (i){

    // 请求接口放这里

})(i)

缓存也放在里面  最直接的方法就是 吧  var i  =  let i

因为循环完了request请求的回调才会执行。

success回调里复用该方法就可以了 不要循环

data: {
  successNum: 0
},
 
function test(){
  wx.request({
    success(){
      this.data.successNum ++;
      this.test();
    }
  })
}

循环里面的wx.request是同时发送多个请求, 你在异步回调里面打印i, 当然可能相同值呀

大概是因为异步吧

回到顶部