Javascript 使用Angular UI路由器解析promise阵列
在点击我的控制器之前,我正在尝试将promise数组解析为Javascript 使用Angular UI路由器解析promise阵列,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,在点击我的控制器之前,我正在尝试将promise数组解析为事物: resolve:{ things: function($q){ var promises = []; var titles = []; var thingRef = ['a1', 'a2', 'a3']; angular.forEach(thingRefs, function(thingRef){ promises.push($firebase(ref.child('things')
事物
:
resolve:{
things: function($q){
var promises = [];
var titles = [];
var thingRef = ['a1', 'a2', 'a3'];
angular.forEach(thingRefs, function(thingRef){
promises.push($firebase(ref.child('things').child(thingRef).child('title')).then(function(title){
titles.push(title);
}));
});
$q.all(promises).then(function(){
return titles;
});
}
},
我做错了什么?我想你需要:
return $q.all(promises).then(function(){
return titles;
});
因为如果没有外部的回报,内部的回报就不会去任何地方
现在resolve.things
返回一个承诺,当解析时,将包含一个标题数组
还有一些其他调整:
resolve:{
things: function($q){
var promises = [];
var thingRef = ['a1', 'a2', 'a3'];
angular.forEach(thingRefs, function(thingRef){
promises.push($firebase(ref.child('things').child(thingRef).child('title')));
});
return $q.all(promises);
}
}
我做了一些额外的调整。如果这不起作用,你能给我看一下承诺的输出和firebase(参考child('things')。child(参考thingRef)。child('title'))的结果吗??我被完全智障了。我忘记注入
ref
。谢谢你的帮助顺便说一句,您确实需要在$q.all()
是之前返回,因为$q.all
生成一个新的承诺,当所有输入承诺都得到解决时,该承诺就会得到解决。如果不返回任何内容,则只会得到未定义的。