今天关于函数执行顺序出了点问题,
一直想不通,后来一看,小程序的所有请求都是异步的请求。给自己留个心眼,免得以后又出问题
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老是不对,返回的是上一个刷出来的数组值。如果按照顺序执行的话应该是这样。
后来才想起,小程序的所有请求都是异步的。在还没请求并改变数组的时候,下一条语句就已经执行了。
所以导致了以上的错误,害得纠结了半小时。
给自己提个醒,免得以后再犯错。