微信小程序所有请求都是异步加载

今天关于函数执行顺序出了点问题,

一直想不通,后来一看,小程序的所有请求都是异步的请求。给自己留个心眼,免得以后又出问题


Page({


  data: {
    books: '',
    teamId:[1],
    banbenIdarray:[],
    zhangjieIdarray:[],
    unit: "",
    gradeId:"",
    banbenId:"",
    zhangjieId:"",
    meng:0,
    money: "",
    multiArray: [['七年级', '八年级', '九年级'], ['人教版', '苏教版',], ['上下册', '上册', "下册"]],
    objectMultiArray: [
      [
        {
          id: 0,
          name: '七年级'
        },
        {
          id: 1,
          name: '八年级'
        }
      ], [
        {
          id: 2,
          name: '九年级'
        },
        {
          id: 0,
          name: '人教版'
        },
        {
          id: 1,
          name: '苏教版'
        },
        {
          id: 0,
          name: '上下册'
        },
        {
          id: 1,
          name: '上册'
        }
      ], [
        {
          id: 2,
          name: '下册'
        },

      ]
    ],
    multiIndex: [0, 0, 0],

    array: ["全部", '第一单元', '第二单元', '第三单元', '第四单元', '第五单元', '第六单元', '第七单元', '第八单元'],
    parent: '',
    arrayone: [{id:1,value:'a',name:'A' },{id:2,value:'b',name:'B' }],
    arraybanben: [{id:1,value:'a',name:'A' },{id:2,value:'b',name:'B' }],
    arrayzhangjie: [{id:1,value:'a',name:'A' },{id:2,value:'b',name:'B' }],
    index:0,
    index2:0,
    index3:0,
    id:"",
    school: ''

  },


   onLoad: function (options) {
    var that = this;
    // var teamId=[];
    var banbenIdarray=[];

    //  wx.request({
      
    //    url:getApp().globalData.website + "classi/", 
    //    // url: "http://192.168.1.110:8000/news/listNews/", 
    //   method: "get",
    //   //向后台传递的值
    //   data: {
    //     //qqq: this.data.allchecked
    //    // openId: wx.getStorageSync('openId')
    //     //后台接到qqq:true
    //    }, 
    //    //基本的键值对表单表单传递编码格式,转换成字符串进行传递
    //  header: {
    //      'content-type': 'application/x-www-form-urlencoded'
    //    },
    //    //成功回调函数
    //   success: function (res) {
    //     for (var i = 0; i 

 

问题出在这儿,想要先刷版本,通过版本id刷年级,再通过年级id和版本id刷章节。

  bindBanben: function(e){
    var that=this;
    var index2=that.data.index2;
     var banbenId=e.currentTarget.dataset.id;
     // console.log("打印版本id")
    this.setData({
      index2: e.detail.value,
      banbenId: banbenId
    })
      that.setData({
      meng:that.data.index2
    })
     that.setData({
       index:0,
       });
     that.setData({
       index3:0,
       });
    console.log("你说打");
    console.log("打印的index2")
    console.log(that.data.index2);
    console.log("版本用数组打印的id")
    console.log(that.data.banbenIdarray[that.data.meng]);
    
    that.shuanianji();
    that.shuazhangjie();
    
  },

 

 最后两句:
    that.shuanianji();
    that.shuazhangjie();

在版本改变后想要先刷年级,继而章节跟着变。但发现id老是不对,返回的是上一个刷出来的数组值。如果按照顺序执行的话应该是这样。

后来才想起,小程序的所有请求都是异步的。在还没请求并改变数组的时候,下一条语句就已经执行了。

所以导致了以上的错误,害得纠结了半小时。

给自己提个醒,免得以后再犯错。

你可能感兴趣的:(前端)