Korzystanie z węzła 4.x. Kiedy masz Promise.all(promises).then()
, jaki jest właściwy sposób, aby rozwiązać dane i przekazać je do następnego .then()
?Objaśnienie obietnicy .all(). Then()?
chcę zrobić coś takiego:
Promise.all(promises).then(function(data){
// Do something with the data here
}).then(function(data){
// Do more stuff here
});
Ale nie jestem pewien, w jaki sposób uzyskać dane do 2 .then()
. Nie mogę użyć resolve(...)
w pierwszym .then()
. Pomyślałem, że mogę to zrobić:
return Promise.all(promises).then(function(data){
// Do something with the data here
return data;
}).then(function(data){
// Do more stuff here
});
Ale to nie wydaje się być właściwym sposobem na zrobienie tego ... Jakie jest właściwe podejście do tego?
Interesujące. Dziękuję Ci. Czy nie można "odrzucić" wartości po początkowej funkcji "Obietnica"? Lub rzucenie błędu w dowolnym miejscu łańcucha zabierze Cię do '.catch()'? Jeśli tak jest, jaki jest sens "odrzucenia" w pierwszej kolejności? Dlaczego nie po prostu rzucić błąd? Jeszcze raz dziękuję, –
@JakeWilson: To są różne pytania. Ale mylicie dwie oddzielne rzeczy: * Tworzenie * i ustalanie obietnicy oraz * postępowanie * z obietnicą. Kiedy tworzysz i rozliczasz obietnicę, używasz 'resolve' i' reject'. Kiedy * obsługujesz *, jeśli przetwarzanie nie powiedzie się, rzeczywiście rzucasz wyjątek, aby wywołać ścieżkę niepowodzenia.I tak, możesz także wyrzucić wyjątek z oryginalnego callback'u 'Promise' (zamiast używać' reject'), ale nie wszystkie niepowodzenia są wyjątkami. –
Dobrze wyjaśnione. Jeszcze raz dziękuję –