如何从呼叫功能之外的axios响应中获取数据

时间:2018-06-05 11:53:20

标签: javascript vue.js axios

我试图从axios GET获取视频标题到视频API:

// METHOD GETTING A VIDEO ID:

latestVideo(videoID) {

  var self = this;
  var title;

  axios.get('http://video-api.dev/'+videoID)
  .then(response => {
    this.title = response.data.title
    console.log(response.data.title) //returns the correct title
  })
  return title // returns nothing

}

控制台日志显示标题,但我需要将其传递给调用函数外部,以便在我的Vue应用程序中使用它。

我已尝试声明var self=this,但似乎没有任何效果。我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

好吧,什么都不返回,因为你没有为变量赋值,你必须在请求完成时将响应数据分配给变量:

latestVideo(videoID) {

  // var self = this;
  // var title;

  axios.get('http://video-api.dev/'+videoID)
  .then(response => {
    this.title = response.data.title
    console.log(response.data.title) //returns the correct title
  })
  // return title // not needed

}

然后,当promise(请求)得到解决后,您可以从组件(this.title

访问该变量

如果使用箭头语法,则不必使用自切换。

答案 1 :(得分:0)

您正在返回标题,在将回复分配给this.title时,请尝试返回this.title。 我假设latestVideo生活在一个类

class x {

latestVideo(videoID) {
    axios.get('http://video-api.dev/'+videoID)
    .then(response => {
        this.title = response.data.title
        console.log(response.data.title) //returns the correct title
    });

    return this.title
}}