Ich habe eine asynchrone Funktion, die eine Zusage zurückgibt. Die Operation sollte nur einmal ausgeführt werden. Ich möchte alle Anrufer dieser Funktion die gleichen Versprechen zurück zu bekommen, aber ich will nicht .catch()
es von einem Anrufer einer anderen Anrufer beeinflussen. Kann ich ein Versprechen klonen oder auf andere Weise implementieren?Kann ich ein Versprechen klonen?
Antwort
aber ich möchte nicht
.catch()
es eines Anrufers auf einen anderen Anrufer auswirken.
Sie nie tun (es sei denn Sie die Rückrufe gekettet haben, die Sie nicht).
Ich möchte alle Anrufer dieser Funktion die gleichen Versprechen zurück zu bekommen
Just do it. Versprechen sind unveränderliche Werte .
Kann ich ein Versprechen klonen?
Wenn Sie wirklich ein deutliches Objekt benötigen, die das ursprüngliche Versprechen folgen werden (dann erfüllen, wenn ich erfüllt oder ablehnen, wenn es ablehnt), können Sie die then
Methode ohne Argumente verwenden:
var clone = promise.then();
console.assert(clone !== promise);
1: Angenommen, Sie verwenden eine geeignete Verheißungsbibliothek. Ich denke, ich erinnere mich an einen Fall einer Bibliothek (alte jQuery?), Wo then
Rückruf-Ergebnisse den Zustand des Versprechens geändert.
2: In ihrem Auflösungsverhalten zumindest. Jedes Versprechen ist immer noch nur ein Objekt.
3: Sie nicht. Das solltest du wirklich nicht. Ich beantworte nur die Titelfrage, aber du solltest aufhören, komische Sachen zu machen.
Warum sollten Sie jemals ein bestimmtes Objekt benötigen, das dem ersten folgt? Warum haben Sie nicht einfach mehrere Codeabschnitte, die alle das gleiche Versprechen haben, wenn Sie mehrere Follower derselben Auflösung/Ablehnung haben wollen? – jfriend00
@ jfriend00: Ich weiß nicht, tun Menschen seltsame Dinge mit dem Versprechen, und ich war auf dem * Objekt * von benutzerdefinierten Eigenschaften zu denken, dass Sie nicht wollen, zu teilen. Auch das Verteilen mehrerer verschiedener Promise-Instanzen kann einen Unterschied für die Löschung bewirken (abhängig von der Implementierungssemantik). Aber ja, unter normalen Umständen sollten Sie genau das gleiche Versprechen wiederverwenden. Muss ich das in der Antwort deutlicher machen? – Bergi
Ich denke, man sollte wohl klar, dass 99% der Zeit mehr machen (im Grunde immer, wenn Sie etwas nicht-Standard an das Versprechen Objekt selbst tun), müssen Sie nicht ein weiteres Versprechen müssen und alle Teile des Codes können nur zuschauen das gleiche Versprechen. – jfriend00
- 1. Ich kann ein Git-Repository nicht klonen
- 2. Wie kann ich ein Versprechen abgeben?
- 3. Wie kann ich ein DateTime-Objekt in C# klonen?
- 4. Kann ich ein Git-Repository von BitBucket klonen?
- 5. Wie kann ich ein Objekt (tiefe Kopie) in Dart klonen?
- 6. Wie kann ich ein ganzes Projekt in IntelliJ Idea klonen?
- 7. Wie kann ich ein privates Gitlab Repo klonen?
- 8. Kann ich meine Rails-Entwicklungsmaschine "klonen"?
- 9. Wie kann ich ein Onload-Versprechen in Async/Await konvertieren
- 10. Wie kann ich ein Versprechen zum Testen ablehnen?
- 11. Wie kann ich eine .NET-Lösung klonen?
- 12. Wie kann ich eine Wordpress-Site klonen?
- 13. Wie kann ich ohne Proxy klonen?
- 14. Ein Versprechen für mehrere Versprechen - Nebenläufigkeit Problem
- 15. Wie kann ich mein eigenes Versprechen abgeben?
- 16. Wie setze ich Körper in ein Versprechen?
- 17. Wie kann ich besser lesbare Versprechen nutzen?
- 18. kann nicht git Klonen repositary
- 19. Wie kann ich von einer anderen Maschine "klonen"?
- 20. Kann ich das Klonen in Script.aculo.us Ghosting anpassen?
- 21. Warum kann ich einen Repo nicht in/usr/local klonen?
- 22. Wie kann ich saubere Umgebungen zum Testen eines Installers klonen?
- 23. Wie kann ich eine JQM-Listenansicht richtig klonen?
- 24. Warum konnte ich ein Git-Repository nicht klonen?
- 25. iOS (ObjC) PromiseKit - Versprechen innerhalb Versprechen Versprechen
- 26. Wie man ein Versprechen hält
- 27. Erstellen Sie ein leeres Versprechen
- 28. leidet ein rekursives Versprechen Speicherverlust?
- 29. Warum ein MS-Access-Recordset klonen?
- 30. Was bedeutet es, ein Objekt zu klonen()?
Mögliches Duplikat [memoization verheißungs-basierte Funktion] (http://stackoverflow.com/q/28763057/1048572)? – Bergi