【问题标题】:angular js - Return promise instead data objectangular js - 返回承诺而不是数据对象
【发布时间】:2016-02-21 06:42:37
【问题描述】:

我正在使用角度。

在我的 service.js 中,我试图返回一些值,但我得到了带有一些 $$variablespromise 项目和我正在寻找的数据。

问题是我不能处理数据,因为它是一个承诺。如何获取数据对象

function loadLinks(respuesta,link) {
  return SpringDataRestAdapter.process(respuesta, link)
    .then(function (results) {
      return results;
    });
}

我正在使用Spring Data Rest。我从另一个正在运行的服务中复制了这个,但是这个运行不正常。

有什么帮助吗?

谢谢!

【问题讨论】:

  • 返回results.data 或任何可以调用的属性怎么样?
  • 我不知道,这就是我要找的。​​span>

标签: javascript angularjs promise angular-promise spring-data-rest


【解决方案1】:

如果你不做任何额外的逻辑,你可以只返回已经是一个承诺的函数:

function loadLinks(respuesta,link) {
    return SpringDataRestAdapter.process(respuesta, link);
}

你在哪里使用它:

myService.loadLinks(respuesta, link).then(function(result) {
    $scope.results = result;
}, function() {
    // fail
});;

如果你确实想要额外的逻辑,你可以使用 $q 服务:

function loadLinks(respuesta,link) {
    var deferred = $q.defer();
    SpringDataRestAdapter.process(respuesta, link)
        .then(function (results) {
            // do something more
            console.log(results);
            deferred.resolve(results);
        }, function (error) {
            deferred.reject();
        });;

    return deferred.promise;
}

【讨论】:

  • 我想我使用它没有成功。让我检查一下!
  • SpringDataRestAdapter.process() 已经返回了一个承诺,为什么还要创建另一个? 编辑:@devqon 编辑了他的答案以返回函数。
  • 似乎是的,@iWörk,因为我使用的是.then()。无论如何,没有得到正确的答案。您知道如何“处理”它以仅获取数据而不是承诺项吗?
  • @JorgeBaumann 你必须使用 Promise,因为它是一个异步调用
  • 你不能,因为它是一个异步操作。
猜你喜欢
  • 2021-01-13
  • 2021-05-04
  • 1970-01-01
  • 1970-01-01
  • 2015-05-18
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多