收藏
回答

为什么从函数return的数组可以console.log,但是却无法遍历使用?

我写了一个名为 getRect的函数,构造并 return 一个数组。

getRect:function() {
        let positions = []
        for (let i = 0; i < dataArr.length; i++) {
            let numPosition = wx.createSelectorQuery()
            let select = numPosition.select('#p'+dataArr[i].num)
            select.boundingClientRect(function (res) {
                positions.push([res.left+(res.width/2),res.top+(res.height/2)])
                // positions[i] = [[res.left+(res.width/2),res.top+(res.height/2)]]
            })
            numPosition.exec()
        }
        return positions
    },


该数组可以被打印,但是无法遍历和使用。typeof类型为object,长度显示却为0

onLoad: function() {
        let pos = this.getRect()
        console.log(pos) //正常打印
        console.log(typeof(pos)) //object
        console.log(pos.length) //为0
}




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

1 个回答

  • G-STEPS街舞工作室
    G-STEPS街舞工作室
    2023-03-24

    select.boundingClientRect 这个方法是异步的,return positions的时候,其实数据并没有push到数组里

    2023-03-24
    有用
    回复 3
    • 辣笔小茶
      辣笔小茶
      2023-03-25
      那请问通过什么方法使用数据呢
      2023-03-25
      回复
    • G-STEPS街舞工作室
      G-STEPS街舞工作室
      2023-03-25回复辣笔小茶
      2023-03-25
      回复
    • G-STEPS街舞工作室
      G-STEPS街舞工作室
      2023-03-25回复辣笔小茶
      供参考,大概是这个意思,主要还是需要等异步执行完成再返回就行
      2023-03-25
      回复
登录 后发表内容