onLoad: function () {
setTimeout(() => {
wx.request({
url: 'https://api.zhuishushenqi.com/ranking/gender',
method: 'GET',
success: res => {
// console.log(res.data.male)
// 获的男生畅销榜单的id
let id = res.data.male[0]._id
let id2 = res.data.male[5]._id
// 通过榜单id获取女生畅销榜单书籍
wx.request({
url: 'https://api.zhuishushenqi.com/ranking/' + id,
method: 'GET',
success: res => {
// console.log(res.data.ranking.books)
let data = res.data.ranking.books;
let books = [];
for (let i = 0; i <= 7; i++) {
let id = data[i]._id
wx.request({
url: 'https://api.zhuishushenqi.com/book/' + id,
method: 'GET',
success: res => {
books.push(res.data)
if (books.length > 7) {
// 获取男生畅销榜前8本,4本给男生热门,4本给大神区
let book1 = books.splice(0, 4)
let book2 = books.splice(0, 4)
// console.log(book2)
//更改data中recommend数组中的books数组
this.setData({
['recommend[0].books']: book1,
['recommend[2].books']: book2
})
// console.log(this.data.recommend)
}
}
})
}
}
})
// 获取完本榜单
wx.request({
url: 'https://api.zhuishushenqi.com/ranking/' + id2,
method: 'GET',
success: res => {
let data = res.data.ranking.books
let books = []
for (let i = 0; i <= 3; i++) {
let id = data[i]._id
wx.request({
url: 'https://api.zhuishushenqi.com/book/' + id,
method: 'GET',
success: res => {
books.push(res.data)
if (books.length == 4) {
this.setData({
'recommend[1].books': books
})
}
}
})
}
}
})
}
})
}, 2000);
是不是我哪里写的有问题 第一次打开项目onload会执行 但是wx.request不会执行 但是我加了定时器之后 发现只要延迟2秒加载就能正常加载数据 是不是我数据请求量太大了 但是接口就这样 我没办法 这是网上找的接口文档 每次第一次打开项目都必须刷新一次才会执行wx.request 这是什么原因呢 新手求答
看了下,代码感觉似乎没问题。
楼主说wx.request不执行的依据是不是看了模拟器里的Network?如果是的话,那个在onload函数内使用似乎确实在network中抓不到,setTimeout后就可以正常了,可能是模拟器这部分有bug,钩子没有开发好。
实际情况可以在手机上抓包看一下,加不加setTimeout请求都是可以发出去的。