Promise.promisify
ist für asynchrone Funktionen gedacht, die eine Callback-Funktion haben. JSON.parse
ist keine solche Funktion, daher können Sie promisify
hier nicht verwenden.
Wenn Sie eine Funktion zum Zurückgeben von Versprechen von einer Funktion erstellen möchten, die möglicherweise throw
synchron ist, Promise.method
ist der Weg zu gehen:
Alternativ können Sie auch Promise.resolve
verwenden, um Ihre Kette zu starten:
Zunächst ist JSON.parse
keine asynchrone Funktion. Versuchen Sie also nicht Promistifizieren .
Weil ich eine Kette von Versprechen erstellen möchte, in der JSON.parse ganz oben steht
Erstellen Sie dann einfach eine Promise, die mit dem analysierten JSON-Objekt aufgelöst wurde, wie dies hier beschrieben wird.
%Vor%Nun zu Ihrer eigentlichen Frage, Sie erhalten den Fehler,
%Vor%Denn wenn Ihre Kette von Versprechen abgelehnt wird, behandeln Sie sie nicht. Also, vergiss nicht, einen catch-Handler anzuhängen, wie dies
%Vor% LESEN SIE DIESES Es gibt ein Problem mit dem Ansatz, den ich hier gezeigt habe, wie Bergi in den Kommentaren darauf hingewiesen hat. Wenn der Aufruf JSON.parse
fehlschlägt, wird der Fehler synchron ausgelöst und Sie müssen möglicherweise try...catch
um den Promise
-Code schreiben. Stattdessen würde man es schreiben, wie Bergi in seine Antwort vorgeschlagen hat, um ein Promise-Objekt mit nur den Daten zu erstellen, und dann tun JSON.parse
für diese Promise-Kette.
Spät zur Party, aber ich kann total verstehen, warum Sie eine promisified JSON-Analysemethode wünschen, die Ausnahmen nie wirft. Wenn für nichts anderes, dann zu versuchen, zu entfernen, versuchen Sie, / catch-handling von Ihrem Code. Ich sehe auch keinen Grund, warum synchrones Verhalten nicht in Versprechen gehüllt werden sollte. Also hier:
%Vor%Verwendung, z. B .:
%Vor%Tags und Links javascript node.js asynchronous promise bluebird