Ce face Promise.try
Când nu știi dacă o funcție este sincronă sau returnează o promisiune, apelul direct are o problemă: o eroare aruncată sincron nu ajunge în .catch(). Promise.try apelează funcția imediat și transformă orice rezultat sau eroare într-o promisiune.
Argumentele de după funcție îi sunt transmise la apel.
Parametri
| Parametru | Descriere |
|---|---|
functie |
Funcția apelată. |
arg1, arg2, ... |
Opțional. Argumentele ei. |
Ce returnează
O Promise cu rezultatul funcției sau respinsă cu eroarea ei.
Exemple
Exemplul 1: Erorile sincrone ajung în catch
function citesteConfig(text) {
return JSON.parse(text);
}
Promise.try(citesteConfig, '{"port": 8080}').then((c) => console.log("port", c.port));
Promise.try(citesteConfig, "{port}").catch((e) => console.log("prins:", e.name));
Rezultat
port 8080
prins: SyntaxError
Greșeli frecvente
- Scrii
Promise.resolve(f())crezând că prinde erorile luif. Eroarea este aruncată înainte caPromise.resolvesă fie apelat.
Comenzi înrudite
Promise.resolve / Promise.reject: Creează o promisiune deja împlinită cu o valoare sau deja respinsă cu o eroare.try / catch: Prinde erorile, ca programul să nu se oprească și să poți afișa un mesaj clar.Promise / then: O promisiune reprezintă un rezultat care va veni mai târziu: o cerere la server, un fișier citit, o pauză.