收藏
回答

for循环请求为什么打印的i一直为3

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 需求 for 客户端 6.53 2.0.0


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)
    }
     
  }
 
},


最后一次编辑于  02-26  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

5 个回答

  • meiko
    meiko
    02-26

    (function (i){

        // 请求接口放这里

    })(i)

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


    02-26
    赞同 1
    回复 3
    • 陈大剩
      陈大剩
      02-26

      谢谢,这个方法可以

      02-26
      1
      回复
    • DTT
      DTT
      08-06回复陈大剩
      你好,我也遇到了这样的问题,能不能写一下解决方法。
      08-06
      回复
    • DTT
      DTT
      08-06回复陈大剩
      打印可以实现0到X,但是请求还是不对
      08-06
      回复
  • 峰云
    峰云
    02-26

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

    02-26
    赞同 1
    回复 1
    • 陈大剩
      陈大剩
      02-26

      有什么办法解决吗?

      02-26
      回复
  • Dircex
    Dircex
    02-27

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


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


    02-27
    赞同
    回复 3
    • Dircex
      Dircex
      02-27

      successNum 改变值的方式 自己调整下  我是为了方便你看 随便写了

      02-27
      回复
    • 陈大剩
      陈大剩
      02-27回复Dircex

      自己设置  i++吗?

      02-27
      回复
    • Dircex
      Dircex
      02-27回复陈大剩

      额  你可以在调用 request 时 做判断

      从你要遍历的数组的第一个开始

      每成功一次 变量加一

      然后根据变量 判断要用数组哪个元素去再次调用 该函数

      直到变量和数组长度相同 不再发送请求

      02-27
      回复
  • Tïedào
    Tïedào
    02-26

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

    02-26
    赞同
    回复
  • 祺爸💎
    祺爸💎
    02-26

    大概是因为异步吧

    02-26
    赞同
    回复