【问题标题】:How can I use the result of a .then() function in another function in angularfire?如何在 angularfire 的另一个函数中使用 .then() 函数的结果?
【发布时间】:2014-09-22 05:10:35
【问题描述】:

我需要从一个函数访问登录用户的 user.uid,以便我可以将它传递给 Firebase ref。

基于 cmets 更新代码:

var populateTasks = function(date){
  var promise = getKey();
  promise.then(function(user){
    $scope.ref = new Firebase("https://myfirebase.firebaseio.com/users/"+user.uid+"/tasks/" + getWeekStart(date) );
    var sync = $firebase($scope.ref);
    var week = sync.$asArray();
    $scope.week = week;
  });
};

function getKey(){
  return simpleLogin.getUser();
}

谢谢。

【问题讨论】:

  • 嗨@EmptyPockets!我知道你已经解决了这个问题,但是为了以后的帖子,我想指出这里没有足够的上下文让开发人员与你一起解决这个问题。例如,simpleLogin.getUser() 来自哪里? (大概来自这里没有提到的 angularFire-seed )。另外,比这更好的方法是使用resolve in your routes,然后不必担心是否加载了用户。
  • @Kato 谢谢,下次会做。对于我的最新问题,我发布了一个包含所有相关信息的 Plunkr。我想我会在以后的帖子中这样做。感谢您在 stackoverflow 上提供的所有帮助。你没有博客或任何东西吗?

标签: javascript angularjs firebase angularfire


【解决方案1】:

你需要返回getKey()中的promise,然后在populateTasks()中返回的promise上调用then()来访问结果。

【讨论】:

  • 感谢您的快速回复。如何在获取密钥中返回承诺?返回 $promise?
  • @EmptyPockets: then() 返回一个承诺,所以你只需要返回:return ....then(...);
  • 对不起,我是新手。你能再解释一下吗? return simpleLogin.getUser().then(function(user){});
  • 是的;这正是你所需要的。你不明白什么?
  • 那好像返回这个{then:function,catch:function,finally:function}catch:function(callback){finally:function(callback){then:function(callback,errback,progressback) {proto:对象,但我需要获取 user.uid。
猜你喜欢
  • 1970-01-01
  • 2018-06-30
  • 2020-05-31
  • 1970-01-01
  • 2020-03-14
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多