收藏
回答

第一次打开项目onload事件加载数据不出来必须要刷新一次页面?

onLoad: function () {
    setTimeout(() => {
  
    wx.request({
      url'https://api.zhuishushenqi.com/ranking/gender',
      method'GET',
      successres => {
        // 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',
          successres => {
            // 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',
                successres => {
                  books.push(res.data)
                  if (books.length > 7) {
                    // 获取男生畅销榜前8本,4本给男生热门,4本给大神区
                    let book1 = books.splice(04)
                    let book2 = books.splice(04)
                    // 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',
          successres => {
            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',
                successres => {
                  books.push(res.data)
                  if (books.length == 4) {
                    this.setData({
                      'recommend[1].books': books
                    })
                  }
                }
              })
            }


          }
        })


      }


    })
  }, 2000);


是不是我哪里写的有问题 第一次打开项目onload会执行 但是wx.request不会执行 但是我加了定时器之后 发现只要延迟2秒加载就能正常加载数据 是不是我数据请求量太大了 但是接口就这样 我没办法 这是网上找的接口文档 每次第一次打开项目都必须刷新一次才会执行wx.request 这是什么原因呢 新手求答

最后一次编辑于  2020-09-28
回答关注问题邀请回答
收藏

1 个回答

  • 那只叫禾一的兔子溜得太快了
    那只叫禾一的兔子溜得太快了
    2020-09-28

    看了下,代码感觉似乎没问题。

    楼主说wx.request不执行的依据是不是看了模拟器里的Network?如果是的话,那个在onload函数内使用似乎确实在network中抓不到,setTimeout后就可以正常了,可能是模拟器这部分有bug,钩子没有开发好。

    实际情况可以在手机上抓包看一下,加不加setTimeout请求都是可以发出去的。


    2020-09-28
    有用
    回复
登录 后发表内容
问题标签