wszystko:Jak zdecydować, które obietnica robi potem/catch według
Jestem całkiem nowy, Obiecaj, oto przykład:
var someAsyncThing = function() {
return new Promise(function(resolve, reject) {
// this will throw, x does not exist
resolve(x + 2);
});
};
var someOtherAsyncThing = function() {
return new Promise(function(resolve, reject) {
reject('something went wrong');
});
};
someAsyncThing().then(function() {
return someOtherAsyncThing();
}).catch(function(error) {
console.log('oh no', error);
});
Nie dość dostać jak .then() działa z Promise, teraz mogę zrozumieć someAsyncThing()
zwrócenie obietnicy, która wygeneruje wyjątek i tym samym przejdzie do części .catch()
. A jeśli możemy zmienić resolve(x+2)
do resolve(4)
, a następnie będzie go uruchomić someOtherAsyncThing();
i wrócić inną obietnicę
pierwsze pytanie brzmi, czy powrót .Następnie() jest ta obietnica?
I drugie pytanie, jeśli w someOtherAsyncThing()
„s Obietnicy, używam resolve(x+2)
spowodować wyjątek, to będzie również udać się do samego .catch()
częściową jak mogę sprawić, że .catch()
tylko złapać wyjątek spowodowane someAsyncThing()
obietnica (i to samo pytanie dla przykuty .then()
, jeśli istnieje)?
Dzięki
Połów złapie każdy wyjątek w łańcuchu, aby uzyskać bardziej szczegółowe informacje na temat wyjątku lub zrobić coś innego, w zależności od tego, która obietnica wyrzuci wyjątek, który musiałbyś odrzucić z informacją, którą następnie będziesz obsługiwał w bloku catch. – PixMach
@PixMach Dzięki, rozumiem. Jest to bardzo elastyczne i trudne w obsłudze. – Kuan