vue中methods有值但是传到mounted却是undefined,这是为什么 该怎么办?

vue中methods有值但是传到mounted却是undefined,这是为什么 该怎么办?

mounted() {
      this.$nextTick(() => {
        getPeixianMapData().then(res => {
          let top10Datas = this.getPeixianMapValue()
          console.log('top10Datas', top10Datas)
          this.initChart(top10Datas)
        })
      })
},
methods: {
      getPeixianMapValue() {
        getPeixianMapValue(0, 10000, {}).then(res => {
          let rd = res.data.content
          function compare(property){
            return function(a,b){
              let value1 = a[property];
              let value2 = b[property];
              return value2 - value1;        
            }
          }
          let sortData = rd.sort(compare('value'))
          let top10Data = []
          for (let i = 0; i < 10; i++) {
            top10Data.push(sortData[i])
          }
          console.log('top10', top10Data)
          return top10Data
        })
      },

      ......
}

img

        getPeixianMapValue() {
            return new Promise((resolve) => {
            getPeixianMapValue(0, 10000, {}).then(res => {
              let rd = res.data.content

              function compare(property) {
                return function (a, b) {
                  let value1 = a[property];
                  let value2 = b[property];
                  return value2 - value1;
                }
              }
              let sortData = rd.sort(compare('value'))
              let top10Data = []
              for (let i = 0; i < 10; i++) {
                top10Data.push(sortData[i])
              }
              console.log('top10', top10Data)
              resolve(top10Data)
            })
          })

        }

getPeixianMapValue 是异步的还是同步的 如果是异步的 那你肯定拿不到

想返回异步结果 肯定不能直接写return 哦

getPeixianMapValue都是异步的,return怎么可能拿到结果,可以返回promise

在各个大佬的帮助下 终于能运行出来了
最终的解决方案还挺简单的

mounted() {
      this.$nextTick(() => {
        getPeixianMapData().then(res => {
          this.getPeixianMapValue().then(res => {
            let top10Datas = res
            this.initChart(top10Datas)
          })
        })
      })
    },
methods: {
      getPeixianMapValue() {
        return getPeixianMapValue(0, 10000, {}).then(res => {
          let rd = res.data.content

          function compare(property) {        //排序
            return function (a, b) {
              let value1 = a[property];
              let value2 = b[property];
              return value2 - value1;        //倒序   value1-value2  正序
            }
          }

          let sortData = rd.sort(compare('value'))
          let top10Data = []
          for (let i = 0; i < 10; i++) {
            top10Data.push(sortData[i])
          }
          return top10Data
        })
      },
}

就通过了两个 return就传出来了 (虽然我也不懂这是为啥 有大佬看到也可以在下面帮忙解释) 主要还是上面mounted需要通过then调用这才是关键步骤

把mounted换为created试试,一般这里调用都没有问题,如果还有问题可以考虑用settimeout延时处理,有时调用摄像头等必须这样实现。