Ich habe Probleme, wenn es um $ http Versprechen in angularjs kommt. Ich tue das in meinem Dienst: (die getSomething Funktion sollte zwei Versprechen verbinden)
Die zweite Funktion verwendet eine externe Callback-Funktion!
%Vor%Wenn ich den Dienst in meinem Controller verwende, gibt er nicht die Datei console.log aus:
%Vor%bearbeiten: Wenn ich die Callback-Funktion selbst in "compactData" definiere, funktioniert es, aber ich verwende "jsonld.compact" von Ссылка und das funktioniert nicht!
%Vor%Ich erhalte die console.log Ausgabe in jsonld.compact aber die Lösung funktioniert nicht und ich weiß nicht warum.
funktioniert nur mit $ rootScope. $ apply (deferred.resolve (compacted));
Chaining verspricht Arbeiten hier: jsfiddle
Wenn in Ihrer Implementierung $http.get
oder compactData
falsch läuft, wird Ihre console.log(data)
nicht aufgerufen.
Sie sollten vielleicht Fehler finden:
%Vor%Immer wenn Sie einen externen (extern zu AngularJS) Callback verwenden, der in einem neuen Turn / Tick ausgeführt wird, müssen Sie $ apply () für den entsprechenden Bereich aufrufen, nachdem dieser aufgerufen wurde. Dadurch weiß AngularJS, dass es aktualisiert werden muss. Du solltest sichergehen, dass du es nur einmal anrufst - nachdem alle Versprechen gelöst wurden. Abgesehen davon bietet jsonld.js eine Promise / Future-API. Wenn Sie also Versprechungen bereits verwenden, müssen Sie diesen Wrapper-Code nicht oben ausführen. Stattdessen können Sie tun:
%Vor%