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".
重新表述您的目标
我已经搜索和试验过,但似乎没有任何东西能按我想要的方式工作。如果有人有任何建议,请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".