I think you need:
return $q.all(promises).then(function(){
return titles;
});
Because without that outer return the inner return doesn't go anywhere.
Now resolve.things
returns a promise, that when resolved, will contain an Array of titles.
With some other adjustments:
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);
}
}