收藏
回答

为什么执行getList中的代码后dataObj的长度归零了?(受不了了)

data: { dataObj:[], pageNum:0, pageLen:6, dateList:Array(6).fill(null) },

getList() { console.log(this.data.dataObj[0]) }

,

回答关注问题邀请回答
收藏

2 个回答

  • 0
    0
    04-03

    看看你getList怎么写的,截个图


    04-03
    有用 1
    回复 5
    • 不悦
      不悦
      04-03
      // pages/admin0_users/admin0_users.js
      var db = wx.cloud.database()
      Page({
        /**
         * 页面的初始数据
         */
        data: {
          dataObj:[],
          pageNum:0,
          pageLen:6,
          dateList:Array(6).fill(null)
        },
        getList() {
          console.log(this.data.dataObj[0])
        },
        getData(){
          wx.cloud.callFunction({
          name: "getUsers"
          })
          .then(res=>{
            for (var i in res.result.data){
              this.data.dataObj.push(res.result.data[i]);
            }
          })
        },
        /**
         * 生命周期函数--监听页面加载
         */
        onLoad(options) {
          this.getData()
          this.getList()
        },
        /**
         * 生命周期函数--监听页面初次渲染完成
         */
        onReady() {
        },
        /**
         * 生命周期函数--监听页面显示
         */
        onShow() {
        },
        /**
         * 生命周期函数--监听页面隐藏
         */
        onHide() {
        },
        /**
         * 生命周期函数--监听页面卸载
         */
        onUnload() {
        },
        /**
         * 页面相关事件处理函数--监听用户下拉动作
         */
        onPullDownRefresh() {
        },
        /**
         * 页面上拉触底事件的处理函数
         */
        onReachBottom() {
        },
        /**
         * 用户点击右上角分享
         */
        onShareAppMessage() {
        }
      })
      04-03
      回复
    • 不悦
      不悦
      04-03
      拜托了大佬。
      04-03
      回复
    • 0
      0
      04-03回复不悦
      这个应该是你for循环没执行完的问题,用Promise和async/await:改造一下




      function forLoopWithPromise() {
        return new Promise((resolve) => {
          for (let i = 0; i < 10; i++) {
            // 循环中的操作
          }
          resolve(); // 循环结束后调用resolve
        });
      }
      async function runLoop() {
        await forLoopWithPromise();
        console.log(循环结束,执行这里的代码;);
      }
      runLoop();
      04-03
      1
      回复
    • 不悦
      不悦
      04-03
      // pages/admin0_users/admin0_users.js
      var db = wx.cloud.database()
      Page({
        /**
         * 页面的初始数据
         */
        data: {
          dataObj:[],
          pageNum:0,
          pageLen:6,
          dateList:Array(6).fill(null)
        },
        getList() {
          console.log(this.data.dataObj[0])
        },
        getData: function () {
          return new Promise((resolve) => {
            wx.cloud.callFunction({
              name: "getUsers"
              })
              .then(res=>{
                for (var i in res.result.data){
                  this.data.dataObj.push(res.result.data[i]);
                }
              })
            resolve(); // 循环结束后调用resolve
          });
        },
        init : async function() {
          await this.getData()
          this.getList()
        },
        /**
         * 生命周期函数--监听页面加载
         */
        onLoad(options) {
          this.init()
        },
        /**
         * 生命周期函数--监听页面初次渲染完成
         */
        onReady() {
        },
        /**
         * 生命周期函数--监听页面显示
         */
        onShow() {
        },
        /**
         * 生命周期函数--监听页面隐藏
         */
        onHide() {
        },
        /**
         * 生命周期函数--监听页面卸载
         */
        onUnload() {
        },
        /**
         * 页面相关事件处理函数--监听用户下拉动作
         */
        onPullDownRefresh() {
        },
        /**
         * 页面上拉触底事件的处理函数
         */
        onReachBottom() {
        },
        /**
         * 用户点击右上角分享
         */
        onShareAppMessage() {
        }
      })
      04-03
      回复
    • 不悦
      不悦
      04-03回复0
      这样改造吗?还是不行。、
      04-03
      回复
  • 不悦
    不悦
    04-02

    this.data.dataObj[0] -> this.data.dataObj之后,

    打印了这个长度为0的数组。我是莫名奇妙的。

    dataObj是这个样子的。

    04-02
    有用
    回复
登录 后发表内容