aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/global_objects/promise/catch/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/promise/catch/index.html')
-rw-r--r--files/uk/web/javascript/reference/global_objects/promise/catch/index.html189
1 files changed, 0 insertions, 189 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/promise/catch/index.html b/files/uk/web/javascript/reference/global_objects/promise/catch/index.html
deleted file mode 100644
index 7e84771513..0000000000
--- a/files/uk/web/javascript/reference/global_objects/promise/catch/index.html
+++ /dev/null
@@ -1,189 +0,0 @@
----
-title: Promise.prototype.catch()
-slug: Web/JavaScript/Reference/Global_Objects/Promise/catch
-tags:
- - ECMAScript 2015
- - JavaScript
- - Promise
- - метод
-translation_of: Web/JavaScript/Reference/Global_Objects/Promise/catch
----
-<div>{{JSRef}}</div>
-
-<p>Метод <code><strong>catch()</strong></code> вертає {{jsxref("Promise","проміс")}} та має справу лише з відхиленнями. Він поводиться так само, як виклик {{jsxref("Promise.then", "Promise.prototype.then(undefined, onRejected)")}} (насправді, <code>obj.catch(onRejected)</code> здійснює внутрішній виклик <code>obj.then(undefined, onRejected)</code>). Це означає, що ви маєте надати функцію <code>onRejected</code>, навіть якщо хочете отримати повернене значення <code>undefined</code> - наприклад, <code>obj.catch(() =&gt; {})</code>.</p>
-
-<div>{{EmbedInteractiveExample("pages/js/promise-catch.html")}}</div>
-
-
-
-<h2 id="Синтаксис">Синтаксис</h2>
-
-<pre class="syntaxbox"><var>p</var>.catch(<var>onRejected</var>);
-
-p.catch(function(<var>reason</var>) {
- // відхилення
-});
-</pre>
-
-<h3 id="Параметри">Параметри</h3>
-
-<dl>
- <dt><code><var>onRejected</var></code></dt>
- <dd>{{jsxref("Function","Функція")}}, що викликається, коли об'єкт <code>Promise</code> відхилено. Ця функція має один аргумент:
- <dl>
- <dt><code><var>reason</var></code></dt>
- <dd>Причина відхилення.</dd>
- </dl>
- Проміс, повернений методом <code>catch()</code>, відхиляється, якщо <code>onRejected</code> викидає помилку або повертає проміс, що сам є відхиленим; інакше, він вирішується.</dd>
-</dl>
-
-<h3 id="Значення_що_повертається">Значення, що повертається</h3>
-
-<p>Здійснює внутрішній виклик <code>Promise.prototype.then</code> на об'єкті, на якому був викликаний, передаючи параметри <code>undefined</code> та отриманий обробник <code>onRejected</code>. Повертає значення цього виклику, тобто, {{jsxref("Promise")}}.</p>
-
-<div class="warning">
-<p>Зауважте, що наведені нижче приклади викидають екземпляри <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Error">Error</a>. Це вважається гарною практикою у порівнянні з викиданням рядків: Інакше та частина, що здійснює перехоплення, була б змушена робити перевірки, щоб дізнатись, чи є аргумент рядком, чи помилкою, і ви могли б втратити цінну інформацію, таку як траси стеків.</p>
-</div>
-
-<p><strong>Демонстрація внутрішнього виклику:</strong></p>
-
-<pre class="brush: js">// заміщуємо початковий Promise.prototype.then/catch, щоб додати трохи логів
-(function(Promise){
- var originalThen = Promise.prototype.then;
- var originalCatch = Promise.prototype.catch;
-
- Promise.prototype.then = function(){
- console.log('&gt; &gt; &gt; &gt; &gt; &gt; викликано .then на %o з аргументами: %o', this, arguments);
- return originalThen.apply(this, arguments);
- };
- Promise.prototype.catch = function(){
- console.error('&gt; &gt; &gt; &gt; &gt; &gt; викликано .catch на %o з аргументами: %o', this, arguments);
- return originalCatch.apply(this, arguments);
- };
-
-})(this.Promise);
-
-
-
-// викликаємо catch на вже вирішеному промісі
-Promise.resolve().catch(function XXX(){});
-
-// виводить:
-// &gt; &gt; &gt; &gt; &gt; &gt; викликано .catch на Promise{} з аргументами: Arguments{1} [0: function XXX()]
-// &gt; &gt; &gt; &gt; &gt; &gt; викликано .then на Promise{} з аргументами: Arguments{2} [0: undefined, 1: function XXX()]
-</pre>
-
-<h2 id="Опис">Опис</h2>
-
-<p>Метод <code>catch</code> використовується для обробки помилок у композиції промісів. Оскільки він вертає {{jsxref("Promise","проміс")}}, його <a href="/uk/docs/Web/JavaScript/Guide/Using_promises#Chaining_after_a_catch">можна додавати в ланцюги</a> так само, як метод {{jsxref("Promise.then", "then()")}}.</p>
-
-<h2 id="Приклади">Приклади</h2>
-
-<h3 id="Використання_та_ланцюгування_метода_catch">Використання та ланцюгування метода <code>catch</code></h3>
-
-<pre class="brush: js">var p1 = new Promise(function(resolve, reject) {
- resolve('Успіх!');
-});
-
-p1.then(function(value) {
- console.log(value); // "Успіх!"
- throw new Error('о, ні!');
-}).catch(function(e) {
- console.error(e.message); // "о, ні!"
-}).then(function(){
- console.log('після catch ланцюг відновлено');
-}, function () {
- console.log('Не запуститься через catch');
-});
-
-// Наступний код поводиться так само
-p1.then(function(value) {
- console.log(value); // "Успіх!"
- return Promise.reject('о, ні!');
-}).catch(function(e) {
- console.error(e); // "о, ні!"
-}).then(function(){
- console.log('після catch ланцюг відновлено');
-}, function () {
- console.log('Не запуститься через catch');
-});
-</pre>
-
-<h3 id="Підводні_камені_при_викиданні_помилок">Підводні камені при викиданні помилок</h3>
-
-<pre class="brush: js">// Викидання помилок викличе метод catch у більшості випадків
-var p1 = new Promise(function(resolve, reject) {
- throw new Error('Ой-ой!');
-});
-
-p1.catch(function(e) {
- console.error(e); // "Ой-ой!"
-});
-
-// Помилки, викинуті всередині асинхронних функцій, поводитимуться, як неперехоплені
-var p2 = new Promise(function(resolve, reject) {
- setTimeout(function() {
- throw new Error('Неперехоплений виняток!');
- }, 1000);
-});
-
-p2.catch(function(e) {
- console.error(e); // Це ніколи не виконається
-});
-
-// Помилки, викинуті після виклику resolve, глушаться
-var p3 = new Promise(function(resolve, reject) {
- resolve();
- throw new Error('Заглушений виняток!');
-});
-
-p3.catch(function(e) {
- console.error(e); // Це ніколи не виконається
-});</pre>
-
-<h3 id="Якщо_він_вирішений">Якщо він вирішений</h3>
-
-<pre class="brush: js">//Створюємо проміс, що не викличе onReject
-var p1 = Promise.resolve("виклик наступного");
-
-var p2 = p1.catch(function (reason) {
- //Це ніколи не буде викликано
- console.error("перехоплено p1!");
- console.error(reason);
-});
-
-p2.then(function (value) {
- console.log("onFulfilled наступного проміса"); /* onFulfilled наступного проміса */
- console.log(value); /* виклик наступного */
-}, function (reason) {
- console.log("onRejected наступного проміса");
- console.log(reason);
-});</pre>
-
-<h2 id="Специфікації">Специфікації</h2>
-
-<table class="standard-table">
- <thead>
- <tr>
- <th scope="col">Специфікація</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>{{SpecName('ESDraft', '#sec-promise.prototype.catch', 'Promise.prototype.catch')}}</td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2>
-
-<p class="hidden">To contribute to this compatibility data, please write a pull request against this repository: <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</p>
-
-<p>{{Compat("javascript.builtins.Promise.catch")}}</p>
-
-<h2 id="Див._також">Див. також</h2>
-
-<ul>
- <li>{{jsxref("Promise")}}</li>
- <li>{{jsxref("Promise.prototype.then()")}}</li>
-</ul>