我进行了搜索和实验,但似乎没有什么能按照我想要的方式工作。如果有人有任何建议,请发表任何想法。
这就是我想要的工作方式。
var myfunc = function(args) {
var result = null;
result = __myservice.$loaded().then(function(data) {
return data;
});
return result;
}
每次都会返回 NULL,如果有人知道如何执行此操作,请告诉我。
编辑:(添加服务/工厂代码)
这是使用 AngularFire Seed 仅供引用,大部分代码未更改,因此 fbutil 是来自 AngularSeed 的,我相信它也内置了 Auth。
app.factory('circlesList', ['fbutil', '$firebaseArray', function(fbutil, $firebaseArray) {
var ref = fbutil.ref('circles');
return $firebaseArray(ref);
}]);
最佳答案
数据是异步加载(和同步)的。您正在尝试的是规避现代网络的异步特性。但不幸的是,您现在无法返回尚未从服务器返回的内容。
请参阅此引用问题以获得详细解释:How do I return the response from an asynchronous call?
您可以返回 $loaded()
promise ,它允许调用函数执行 then()
部分。
请注意,$loaded()
可能仅在初始数据加载时触发。当您使用 Firebase 时,最好放弃这种请求/响应心态,而是用“每当数据发生变化时,我想做 ABC”来重新表述您的目标。
关于javascript - Angularfire $loaded().then(从这里返回一些东西),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33675288/