2015-04-17 6 views
6

Ich möchte wan.js unbehandelte Ablehnungen abfangen, damit ich sie protokollieren kann. Um dies zu erreichen I außer Kraft gesetzt console.warn habe(), aber das kann Sachen log andere als when.js, die ich bin nicht interessiert inTrap when.js unbehandelte Ablehnungen

Ref.: https://github.com/cujojs/when/blob/master/docs/api.md#debugging-promises

ich verwende prettymonitor mit when.js https://github.com/AriaMinaei/pretty-monitor

+0

By the way, ist dies die eigentliche Dokumentation hier https://github.com/cujojs/when/blob/master/docs/debug-api.md ist und die nicht behandelte Ablehnung Tracking "spec" hier: https://gist.github.com/benjamingr/0237932cee84712951a2 aber letzteres wurde von einem retard geschrieben :( –

Antwort

4

Wenn Sie auf der Serverseite sind, können Sie die Verhinderungs-Hooks verwenden. Dies funktioniert auf den meisten Versprechen Implementierungen auf der Server-Seite (io.js, drossel, wenn usw.):

process.on("unhandledRejection", function(promise, reason){ 
    // deal with the rejection here. 
}); 

Wenn Sie in einem Browser-Umgebung sind, dann sind die Dinge weniger standardisiert. Allerdings sieht Wenn noch Ähnliche Haken gibt:

window.addEventListener('unhandledRejection', function(event) { 
    event.preventDefault(); // This stops the initial log. 
    // handle event 
    event.detail.reason; // rejection reason 
    event.detail.key; // rejection promise key 
}, false); 

Es gibt auch lokale Ablehnung Haken, diese sind gut, wenn Sie nur Ablehnungen von einer einzigen Instanz der Versprechen Bibliothek zu handhaben wollen - dies ist in der Regel nützlich, wenn Aufbau einer Bibliothek selbst:

var Promise = require('when').Promise; 
Promise.onPotentiallyUnhandledRejection = function(rejection) { 
    // handle single instance error here 
}; 
+0

T hanks so viel. Ich konnte das zunächst nicht zum Laufen bringen, da ich im Browser V2.51 (V3.7 in Node) verwendet habe. Ich habe den Browser auf V3.7 aktualisiert und window.addEventListener ('unhandledRejection', ..) funktioniert ein Vergnügen. Ich habe jetzt auch https://github.com/cujojs/when/blob/master/docs/debug-api.md gefunden, was eine große Hilfe ist. – nevf

+0

@nevf die globalen unangepassten Ablehnungs APIs für node/io.js sind relativ neu - da der Autor, ich würde wirklich Feedback zu schätzen, wie Sie gehen - zögern Sie nicht, eine E-Mail zu schießen oder eine Antwort auf den Kern wenn/wenn Sie Probleme mit der API haben und/oder Vorschläge dazu haben. –

+0

Ich füge das zu meiner node.js App hinzu und wenn es irgendwelche Probleme gibt werde ich Sie wissen lassen. Ich habe den Stapel gefunden, also ignoriere den Text, den ich gerade gelöscht habe. – nevf