aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/global_objects/promise/resolve/index.html
blob: 88aeba5465ea61f911a4f12a9e98f6794a43d370 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
---
title: Promise.resolve()
slug: Web/JavaScript/Reference/Global_Objects/Promise/resolve
tags:
  - ECMAScript 2015
  - JavaScript
  - Method
  - Promise
  - Проміс
  - метод
translation_of: Web/JavaScript/Reference/Global_Objects/Promise/resolve
---
<div>{{JSRef}}</div>

<p>Метод <code><strong>Promise.resolve()</strong></code> повертає об'єкт {{jsxref("Promise")}}, вирішений з наданим значенням. Якщо значенням є проміс, то цей проміс буде повернено; якщо значенням є промісоподібний об'єкт (thenable) (такий, що має {{jsxref("Promise.then", "метод \"then\"")}}), то повернений проміс буде його "дотримуватись", приймаючи його кінцевий стан; у іншому випадку повернений проміс буде виконаний з наданим значенням. Функція вирівнює вкладені шари промісоподібних об'єктів (наприклад, проміс, що вирішується з промісом, який вирішується з чимось ще) у єдиний шар.</p>

<h2 id="Синтаксис">Синтаксис</h2>

<pre class="syntaxbox"><var>Promise.resolve(value)</var>;
</pre>

<h3 id="Параметри">Параметри</h3>

<dl>
 <dt>value</dt>
 <dd>Аргумент, з яким буде вирішений даний <code>Promise</code>. Також він може бути промісом або промісоподібним об'єктом.</dd>
</dl>

<h3 id="Значення_яке_повертається">Значення, яке повертається</h3>

<p>Об'єкт {{jsxref("Promise")}}, вирішений з наданим значенням, або проміс, переданий в якості значення, якщо значення було промісом.</p>

<h2 id="Опис">Опис</h2>

<p>Статична функція <code>Promise.resolve</code> повертає вирішений об'єкт <code>Promise</code>.</p>

<h2 id="Приклади">Приклади</h2>

<h3 id="Використання_статичного_методу_Promise.resolve">Використання статичного методу <code>Promise.resolve</code></h3>

<pre class="brush: js">Promise.resolve('Success').then(function(value) {
  console.log(value); // "Успіх"
}, function(value) {
  // не викликається
});
</pre>

<h3 id="Вирішення_проміса_масивом">Вирішення проміса масивом</h3>

<pre class="brush: js">var p = Promise.resolve([1,2,3]);
p.then(function(v) {
  console.log(v[0]); // 1
});
</pre>

<h3 id="Вирішення_проміса_іншим_промісом">Вирішення проміса іншим промісом</h3>

<pre class="brush: js">var original = Promise.resolve(33);
var cast = Promise.resolve(original);
cast.then(function(value) {
  console.log('значення: ' + value);
});
console.log('original === cast ? ' + (original === cast));

// порядок виведення:
// original === cast ? true
// значення: 33</pre>

<p>Перевернутий порядок логів спричинений тим фактом, що обробники <code>then</code> викликаються асинхронно. Дивіться, як працює <code>then</code> <a href="/uk/docs/Web/JavaScript/Reference/Global_Objects/Promise/then#Значення_що_повертається">тут</a>.</p>

<h3 id="Вирішення_промісоподібних_обєктів_та_викидання_помилок">Вирішення промісоподібних об'єктів та викидання помилок</h3>

<pre class="brush: js">// Вирішення промісоподібного об'єкта
var p1 = Promise.resolve({
  then: function(onFulfill, onReject) { onFulfill('виконаний!'); }
});
console.log(p1 instanceof Promise) // true, об'єкт передано у проміс

p1.then(function(v) {
    console.log(v); // "виконаний!"
  }, function(e) {
    // не викликається
});

// Промісоподібний об'єкт викидає помилку перед зворотнім викликом
// Проміс відхиляється
var thenable = { then: function(resolve) {
  throw new TypeError('Помилка');
  resolve('Вирішення');
}};

var p2 = Promise.resolve(thenable);
p2.then(function(v) {
  // не викликається
}, function(e) {
  console.log(e); // TypeError: Помилка
});

// Промісоподібний об'єкт викидає помилку після зворотного виклику
// Проміс вирішується
var thenable = { then: function(resolve) {
  resolve('Вирішення');
  throw new TypeError('Помилка');
}};

var p3 = Promise.resolve(thenable);
p3.then(function(v) {
  console.log(v); // "Вирішення"
}, function(e) {
  // не викликається
});
</pre>

<h2 id="Специфікації">Специфікації</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Специфікація</th>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-promise.resolve', 'Promise.resolve')}}</td>
  </tr>
 </tbody>
</table>

<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2>

<p class="hidden">To contribute to this compatibility data, please write a pull request against this file:  <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</p>

<p>{{Compat("javascript.builtins.Promise.resolve")}}</p>

<h2 id="Дивіться_також">Дивіться також</h2>

<ul>
 <li>{{jsxref("Promise")}}</li>
</ul>