Ich versuche, die getstream API in einem Winkel Service (Fabrik) zu wickelnObjekte zurückgegeben von Versprechen sind nicht definiert
Hier ist mein Code:
.factory('FeedStream', function($http, $q) {
var client = stream.connect('xxxxxxxxxxx');
return {
feed : function() {
$http.get('/api/feed/auth/')
.success(function(auth) {
var user_feed = client.feed('user', auth.user, auth.token);
console.log(user_feed.get());
user_feed.get().then(function(data) {
console.log(data);
return data;
})
})
},
}
Zuerst habe ich die user_id und Auth-Token erhalten von meinem Server über den Endpunkt/api/feed/auth /. Diese Daten werden in einem Winkelversprechen zurückgegeben.
Als nächstes benutze ich diese Daten, um die getstream API aufzurufen, um das Objekt user_feed
zu erhalten. Wenn ich dieses Objekt zurücksende (user_feed
), ist es in der Steuerung nicht definiert. Wenn ich es hier im Service auf der Konsole ausdrucke, hat es den richtigen Wert. Ich habe bemerkt, dass der Druck nach der Rückkehr eine halbe Sekunde dauert. Warum erfolgt die Zuweisung dieser Variablen asynchron?
Jetzt, wenn ich die get
Methode auf diesem user_feed
Objekt innerhalb einer console.log Anweisung aufrufen, ein Javascript Versprechen Objekt ausgedruckt wird. Wenn ich return user_feed.get()
es undefined
an die Steuerung zurückgibt. Wenn ich es hier im Service wie in meinem obigen Code anrufe und das Datenobjekt in der Promise-Than-Anweisung zurückgebe, gibt es undefined
an den Controller zurück. Wenn ich jedoch das data
Objekt drucke, hat es den richtigen Wert.
Warum kann ich keine Objekte von diesem Service zurückgeben? Fehle mir ein grundlegender Aspekt der Verwendung von Versprechen?
Keine Ihrer Funktionen 'tatsächlich return' etwas zu halten Chaining, und Sie dürfen nicht "Erfolg" statt "dann" verwenden. – Bergi