Await колдонуп жатканда убададагы катаны ( четке кагуу) кантип иштетсе болот?
sobes.tech AI
AIден жооп
await менен убада колдонууда, каталар (reject) бир нече жол менен иштетилиши мүмкүн:
-
try...catchструктурасы: Эң кеңири колдонулган жана сунушталган ыкма. Бул убада чечилгенде (resolve) же четке кагылганда (reject) чыккан катаны элеганттуу түрдө кармайт.async function fetchData() { try { const response = await fetch('https://api.example.com/data'); if (!response.ok) { throw new Error(`HTTP ката! стат: ${response.status}`); } const data = await response.json(); console.log(data); } catch (error) { console.error('Маалымат алуу учурунда ката:', error); // Кошумча катаны иштетүү же колдонуучуга кабарлоо } } fetchData(); -
catch()ыкмасыawaitтен кийин: Азыркы учурда сунушталбайт, бирок мүмкүн. Каталар.catch()callbackинде иштетилет, эгер убада четке кагылса.async function fetchData() { const response = await fetch('https://api.example.com/data') .catch(error => { console.error('Fetch аткарууда ката:', error); // Fetch катасын иштетүү throw error; // Кийинки иштетүү үчүн катаны өткөрүп берүү }); if (response && !response.ok) { console.error(`HTTP ката! стат: ${response.status}`); // HTTP катасын иштетүү } if (response && response.ok) { const data = await response.json() .catch(error => { console.error('JSON парсинг учурунда ката:', error); // JSON парсинг катасын иштетүү }); if (data) { console.log(data); } } } fetchData();Бул ыкма көп учурда көптөгөн потенциалдуу каталар чекиттеринде татаал болушу мүмкүн.
-
Катаны кайтаруу менен иштетүү: Кээ бир китепканалар же өзүнчө функциялар
[маалымат, ката]кортежин кайтарат, убададан баш тартпастан.async function safelyFetchData() { const [data, error] = await safePromise(fetch('https://api.example.com/data')); if (error) { console.error('Жалпы каталар:', error); return null; // же башка катаны көрсөтүүчү маані } // safePromise response.ok да иштетет деп эсептейбиз console.log(data); return data; } // safePromiseдин жөнөкөйлөштүрүлгөн мисалы async function safePromise(promise) { try { const result = await promise; // Бул жерде result.ok текшерүү мүмкүн, fetch үчүн if (result && result.ok !== undefined && !result.ok) { throw new Error(`HTTP ката! стат: ${result.status}`); } // fetch үчүн, мүмкүн болсо, result.json() күтүшү керек if (result && typeof result.json === 'function') { const jsonData = await result.json(); return [jsonData, null]; } return [result, null]; } catch (error) { return [null, error]; } } safelyFetchData();Бул үлгү (көбүнчө "error-first callback" же "go-style error handling" деп аталат) функциянын аткарылышын үзбөстөн, каталарды жергиликтүү иштетүүгө ыңгайлуу.
Эң таза жана окула турган жол try...catch колдонуу, ал await камтыган код блокунун тегерегинде: