【问题标题】:Cannot get my head around Promises无法理解 Promise
【发布时间】:2017-05-06 14:38:01
【问题描述】:

我编写代码时甚至不知道什么是异步 - 这是在项目开始时我刚接触整个编程的时候。

现在,我当然明白它们是什么了。但是,我无法理解 Promises。我有一个 /session 异步调用,当我调用它时,会向我传递一些配置文件变量,但如何完成它,我不知道。我已经按照教程学习并迷失了方向。

有人能指出这应该如何一劳永逸地写吗?我将永远感激:

var getProfileID = function(){
    $http.get('/session')
        .then(function(res){
            return res.data.profileId;
        });
};

getProfileID()
.then(function(res) {
    $scope.profileID = res;
});

这对我来说看起来很错误,但我对 Promise 毫无头绪,不知道从哪里开始。

PS:我使用的是 Angular 1.6.4 并注入了 $q

提前致谢!

【问题讨论】:

  • return $http.get.... 看来您的问题不在于 Promises,而在于了解如何从函数返回值(在这种情况下,该值是 Promise)
  • 你能详细说明一下吗?确实,到目前为止,我在代码中的任何地方都避免了 return,因为我不需要它。
  • 您需要您的函数返回一个 Promise 才能使用该 Promise - 就目前而言,您的函数返回 undefined,因为没有返回语句等同于 @987654325 @ - 我很惊讶你避免在任何地方使用 return - 你的函数一定很有趣
  • 请确保您debug your code有关无法再重现或由简单的印刷错误引起的问题的问题

标签: javascript angularjs promise q


【解决方案1】:

你应该直接从你的函数返回Promise

var getProfileID = function(){
  return $http.get('/session');
};

然后使用它的响应如下:

getProfileID().then(function(res) {
  $scope.profileID = res.data.profileId;
})

【讨论】:

  • 非常感谢!试了一下,效果很好。
猜你喜欢
  • 2014-04-22
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
  • 2020-09-17
  • 2020-11-16
  • 1970-01-01
相关资源
最近更新 更多