Javascript 在带有mount()钩子的Vue中异步/等待不起作用

Javascript 在带有mount()钩子的Vue中异步/等待不起作用,javascript,vue.js,es6-promise,Javascript,Vue.js,Es6 Promise,我使用的是vue 2.5,我有一个挂载钩子,它调用一个模块,该模块获取API nedpoint并通过挂载钩子将其返回给vue组件。我以前问过这个问题,也被提到过这篇文章,并在回答中遵循了示例,但当呈现组件时,我的Vue组件变量仍然显示为未定义。这是我的密码: /modules/retrieveLeagueLeaders const getLeagueLeaders = (url, params) => { fetch(url + new URLSearchParams(par

我使用的是vue 2.5,我有一个挂载钩子,它调用一个模块,该模块获取API nedpoint并通过挂载钩子将其返回给vue组件。我以前问过这个问题,也被提到过这篇文章,并在回答中遵循了示例,但当呈现组件时,我的Vue组件变量仍然显示为未定义。这是我的密码:

/modules/retrieveLeagueLeaders

 const getLeagueLeaders =  (url, params) => {
    fetch(url + new URLSearchParams(params), {
      method: "get",
      headers: {
        Authorization:
          "Basic ****=",
      },
    })
      .then((response) => response.json())
      .then((data) => {
        let leagueLeaders = data;
        console.log(
          "leagueLeaders is %s",
          leagueLeaders.cumulativeplayerstats.playerstatsentry[0].player
            .LastName
        );

        return leagueLeaders;
        
      });

    
  };

  module.exports = getLeagueLeaders;
和Vue代码:

/src/components/leagueLeaders
 mounted: async function () {
      this.qbLeaders = await getLeagueLeaders(this.fetchQbUrl, this.params);
      console.log("qBLeaders is %s", this.qbLeaders);
    },
  })
控制台显示

qBLeaders is undefined nflLeagueLeaders.js:28
leagueLeaders is Wilson getLeagueLeaders.js:17

我已经尝试过将整个模块包装在一个承诺中,但它在运行时仍然没有返回一个承诺。我在Vue挂载钩子中使用Async/Await的方式是否有不正确的地方?我真的需要一些指导,因为我在帖子中尝试了所有的建议,但都没有用。提前感谢。

不要尝试在回调中返回值,这不起作用,您可以简单地返回承诺:

const getLeagueLeaders =  (url, params) => {
   return  fetch(url + new URLSearchParams(params), {
      method: "get",
      headers: {
        Authorization:
          "Basic ****=",
      },
    })
      .then((response) => response.json())
         
  };

  module.exports = getLeagueLeaders;

不要尝试在回调中返回值,这不起作用,您可以简单地返回承诺:

const getLeagueLeaders =  (url, params) => {
   return  fetch(url + new URLSearchParams(params), {
      method: "get",
      headers: {
        Authorization:
          "Basic ****=",
      },
    })
      .then((response) => response.json())
         
  };

  module.exports = getLeagueLeaders;

您的
getLeagueLeaders()
函数不返回任何内容。您的
getLeagueLeaders()
函数不返回任何内容。谢谢!简短而准确。我现在偶然发现了一个类似的方法,但你的方法甚至更短、更优雅。我认为您必须将response.json()指定给某个对象,然后返回该对象。那么response.json()是承诺的隐含解析值吗?这是我的荣幸!简短而准确。我现在偶然发现了一个类似的方法,但你的方法甚至更短、更优雅。我认为您必须将response.json()指定给某个对象,然后返回该对象。那么response.json()是承诺的隐含解析值吗?这是我的荣幸