Frage

Ich arbeite an einer Administrator-App mit Angularjs. Die App holt seine Daten mit $ Ressourcen vom Server ab. Ich enden mit Datenobjekten mit der Eigenschaft von '$ Promise', um zu bestimmen, wann die Daten abgerufen wurden. Alles ist in Ordnung.

Jetzt kann diese Administrator-App auch neue Objekte erstellen. Diese neuen Objekte werden von denselben Controllern verwaltet als derjenige, der normalerweise von "$ Ressourcen" stammt.

also habe ich jetzt zwei Objekte:

  • Objekte mit $ Promise-Eigenschaft. Ich sollte $ Promise verwenden. Dann (), bevor Sie sie mit vollständigen Daten manipulieren
  • einfache Objekte. Sie haben kein $ Promise-Eigenschaft, ihr Wert ist sofort zugänglich

Ich möchte den Code reduzieren und ein einziges Gebrauchsfall haben, das nicht prüfen muss, ob Objektdaten aufgelöst werden oder ob es kein Versprechen ist.

Gibt es ein Problem bei der Erstellung meiner "einfachen" Objekte, indem sie ihnen ein "$ Promise" -Phäfen hinzufügen, das bereits auf sich selbst gelöst ist? Auf diese Weise würde ich immer 'MyObject-Versprechen benutzen. Dann ()'.

Gibt es ein gemeinsames Muster, um diese Situation zu handhaben? Ich konnte keine "Standard" -Methode finden, um diese Art von Objekten mit Winkel zu erstellen.

War es hilfreich?

Lösung

Sie könnten $ q.wen verwenden, wenn nicht sicher ist, ob das Objekt hat ein Versprechen oder nicht.

generasacodicetagpre.

Wenn die resultierende Eigenschaft kein Versprechen hat, wird dies mit dem Versprechen gelöst.

ein Objekt wickelt, das möglicherweise ein Wert oder ein (3rd-Partei) damals, dann ein Versprechen in ein $ Q-Versprechen ist. Dies ist nützlich, wenn Sie sich mit einem Objekt befassen, das möglicherweise ein Versprechen ist, oder wenn das Versprechen von einer Quelle stammt, die nicht vertrauen kann.

Sie müssen nicht immer ein Versprechen erstellen und auf den übertragenen Daten anhängen, stattdessen können Sie Ihre Methoden zurückgeben. Versprechen Sie dadurch, dass Sie das Versprechenmuster umsetzen und die Versprechen-Logik auf Ihrem Service selbst abziehen. Beispiel: -

generasacodicetagpre.

Hier ist eine vereinfachte und weniger explizite Version (Kredit: Benjamin Gruenbaum):

generasacodicetagpre.

Sie können selbstverständlich, dass er natürlich auch den Grund als den Grund zurückgeben und sie basierend auf weiteren Kontrollen verwandeln, die Idee ist, das Versprechen und nicht den Wert zu speichern. Dies hat auch den Vorteil, dass nicht mehrere HTTP-Anforderungen erstellt werden, wenn das Verfahren aufgerufen wird, bevor es einmal zurückgibt.

Jetzt könnten Sie immer tun: -

generasacodicetagpre.

Versprechen können ebenfalls gekettet werden. So könntest du auch das tun: -

generasacodicetagpre.

Andere Tipps

A + -Pressions sollten eine statische Methode anbieten:

generasacodicetagpre.

... das erzeugt ein voraufgelöste Versprechen.Sie sollten eines davon zurücksenden, wenn Ihre Versprechungsbibliothek dies bietet.Groß.Ich mache dies häufig, um Schnittstellenduplizierung zu vermeiden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top