Ich weiß, dass es Antworten gibt, aber ich habe keine spezifische Antwort auf meine eigentliche Frage gefunden.Wie kann ich asynchrone nicht versprochene Fehler abfangen? (Reagieren Sie auf diesen spezifischen Fehler)
Derzeit use ich folgendes Muster viel:
class A
{
getLocation()
{
return Promise.reject(2222222)
}
async a()
{
try
{
var loc = await this.getLocation();
alert(loc)
}
catch (e)
{
alert("catch 2")
}
}
}
new A().a();
- Ergebnis: "Fang 2"
Ereignis Wenn ich einen Fehler in getLocation
werfen:
getLocation()
{
throw Error("ffffff")
}
- Ich bekomme das gleiche Ergebnis - was in Ordnung ist.
Also wo ist das Problem?
Nun, wie Sie wissen, ein Fehler, der asynchronously-non-promised
geworfen wird, ist ein anderes Tier:
So this code won't be catched überhaupt:
getLocation() //bad code from a third party code , third party code
{
return new Promise((v, x) => setTimeout(() =>
{
throw Error("ffffff")
}, 100))
}
Frage:
die Tatsache Bezug, dass ich Fehler suchen wollen - gibt es ein besseres Muster dafür?
Sicher kann ich tun:
window.onerror = function() { alert(4)}
Aber das wäre nicht in Ordnung wie die Strömung von .catch(...)
oder catch(){}
, und ich werde nicht in der Lage sein, Maßnahmen zu tun in Bezug auf dass spezifische Aktion, die Fehler verursacht .
Vollständige Offenlegung:
Kein wirkliches Leben Szenario. Lernziel.