Angularfire $loaded().then(return 来自这里的东西)

Angularfire $loaded().then(return something from here)

我已经搜索和试验过,但似乎没有任何东西能按我想要的方式工作。如果有人有任何建议,请post任何想法。

这就是我希望它的工作方式。

var myfunc = function(args) {
  var result = null;
  result = __myservice.$loaded().then(function(data) {
    return data;
  });

  return result;
}

这个 returns NULL 每次如果有人知道如何做到这一点,请告诉我。

编辑:(添加了 service/factory 代码)

这是使用 angularfire seed fyi,大部分代码未更改,所以 fbutil 是来自 angularseed 的那个,我相信它也内置了 Auth。

app.factory('circlesList', ['fbutil', '$firebaseArray', function(fbutil,  $firebaseArray) {
  var ref = fbutil.ref('circles');
  return $firebaseArray(ref);
}]);

数据是异步加载(和同步)的。您正在尝试的是规避现代网络的异步特性。但不幸的是,您不能return 现在 尚未从服务器返回的内容。

请参阅此参考问题以获得很好的解释:How do I return the response from an asynchronous call?

您可以改为 return $loaded() 承诺,它允许调用函数执行 then() 部分。

请注意,$loaded() 可能仅在加载初始数据时触发。当您使用 Firebase 时,最好放弃这种 request/response 心态,而是根据 "whenever this data changes, I want to do ABC".

重新表述您的目标