Auflösen eines Versprechens in einem Service / Factory vs in einem Controller mit AngularJS

8

Also habe ich mit dem Versprechen gespielt, in einem Service vs in einem Controller zu lösen. Ich würde es lieber im Service auflösen, damit ich die Variable wiederverwenden kann, ohne sie mehrfach auflösen zu müssen.

Das Problem, das ich habe, ist, dass es funktioniert, aber es gibt die Daten sehr sehr langsam zurück. Ich fühle mich, als würde ich hier etwas falsch machen. Es dauert ungefähr 5 oder 6 Sekunden, bis meine ng-Optionen gefüllt sind. Welches ist besser? Und wie kann ich meinen Code verbessern, damit er schneller läuft?

Im Service aufgelöst:

%Vor%

In Controller aufgelöst:

%Vor%

HTML:

%Vor%     
Brooke Clonts 20.07.2015, 16:22
quelle

1 Antwort

4

Bei eckigen Diensten handelt es sich um Singletons, daher gibt es in Ihrer App nur eine Instanz. Auf diese Weise können Sie Daten in Ihrem Dienst auflösen, speichern und bei nachfolgenden Aufrufen die bereits aufgelösten Daten zurückgeben. Dadurch können Sie Ihre Daten nicht mehrfach auflösen und Ihre Logik zwischen Service und Controller aufteilen.

UPDATE - Cache-Versprechen statt, danke yvesmancera für den Bug find

%Vor%

Was das Beschleunigen des Ladens von Daten angeht, sehe ich nichts falsches mit Ihrem Javascript. Es könnte nur Ihr Api-Anruf sein, der viel Zeit in Anspruch nimmt. Wenn Sie Ihren HTML-Code veröffentlichen, könnten wir das überprüfen und sehen, ob etwas langsamer geht.

    
allienx 20.07.2015, 16:36
quelle