【问题标题】:Angular: Return id From $http Inside Parent Function [duplicate]Angular:从 $http 内部父函数返回 id [重复]
【发布时间】:2015-12-01 18:26:12
【问题描述】:

我不确定我这样做是否正确,但我有一个父函数returnPersonId(),它使用$http 获取对象并返回该对象的id

function returnPersonId(n) {
  var q = 'http://api.themoviedb.org/3/search/person?api_key=' + apiKey + '&query=' + n;
  $http({ method: 'GET', url: q })
    .success(function (data, status, headers, config) {
      if (status == 200) {
        var person = data.results[0];
        var id = person.id;
        return id;
      }
    })
    .error(function (data, status, headers, config) {
      console.log('Error happened whilst getting the actor or actress.');
    })
}

目前它在success方法中返回id。我不确定如何将id 返回到其父函数,所以如果我运行该函数,我会返回 id,如下所示:

returnPersonId('tom+hanks'); // returns 31

我该怎么做呢?

感谢任何帮助。

提前致谢!

【问题讨论】:

    标签: javascript angularjs http promise


    【解决方案1】:

    由于回调函数不会从中返回数据,因此您需要切换代码样式以使用 Promise 模式,这样您就可以轻松地返回成功或失败的数据。

    function returnPersonId(n) {
      var q = 'http://api.themoviedb.org/3/search/person?api_key=' + apiKey + '&query=' + n;
      return $http({ method: 'GET', url: q })
        .then(function (resp) {
          var data = res.data
          if (res.status == 200) {
            var person = data.results[0];
            var id = person.id;
            return id;
          }
        },function (error) {
          console.log('Error happened whilst getting the actor or actress.');
          return 'Error occured'
        })
    }
    

    【讨论】:

    • 现在似乎没有返回任何内容。知道为什么会这样吗?控制台中也没有错误。附言我修正了第 4 行的function (resp) 错字。
    猜你喜欢
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 2015-08-11
    • 1970-01-01
    相关资源
    最近更新 更多