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
138
|
---
title: Promise.resolve()
slug: Web/JavaScript/Reference/Global_Objects/Promise/resolve
tags:
- ECMAScript6
- JavaScript
- Промис
- метод
translation_of: Web/JavaScript/Reference/Global_Objects/Promise/resolve
---
<div>{{JSRef}}</div>
<p>Метод <code><strong>Promise.resolve(value)</strong></code> возвращает {{jsxref("Promise")}} выполненный с переданным значением. Если переданное значение является thenable - объект (т.е. имеет метод {{jsxref("Promise.then", "\"then\" method")}}), возвращаемый промис будет следовать thenable - объекту, принимая своё состояние; в ином случае возвращаемый промис будет выполнен с переданным значением.</p>
<h2 id="Синтаксис">Синтаксис</h2>
<pre class="syntaxbox"><var>Promise.resolve(value)</var>;
Promise.resolve(promise);
Promise.resolve(thenable);
</pre>
<h3 id="Параметры">Параметры</h3>
<dl>
<dt>value</dt>
<dd>Значение с которым будет выполнен промис. Может также быть промисом или объект подобный промису (thenable - объект имеющий метод then).</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); // "Success"
}, 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="Выполнение_с_другим_промисом_Promise">Выполнение с другим промисом ( <code>Promise</code>)</h3>
<pre class="brush: js">var original = Promise.resolve(true);
var cast = Promise.resolve(original);
cast.then(function(v) {
console.log(v); // true
});
</pre>
<h3 id="Выполнение_с_thenable_объектом_и_выбрасывание_исключений">Выполнение с thenable объектом и выбрасывание исключений</h3>
<pre class="brush: js">// Выполнение с thenable объектом
var p1 = Promise.resolve({
then: function(onFulfill, onReject) { onFulfill("fulfilled!"); }
});
console.log(p1 instanceof Promise) // true
p1.then(function(v) {
console.log(v); // "fulfilled!"
}, function(e) {
// не вызывается
});
// Thenable объект выбрасывает исключение
// перед вызовом колбэка Promise resolves
var thenable = { then: function(resolve) {
throw new TypeError("Throwing");
resolve("Resolving");
}};
var p2 = Promise.resolve(thenable);
p2.then(function(v) {
// не вызывается
}, function(e) {
console.log(e); // TypeError: Throwing
});
// Thenable объект выбрасывает исключение
// после вызова колбэка Promise resolves
var thenable = { then: function(resolve) {
resolve("Resolving");
throw new TypeError("Throwing");
}};
var p3 = Promise.resolve(thenable);
p3.then(function(v) {
console.log(v); // "Resolving"
}, function(e) {
// не вызывается
});
</pre>
<h2 id="Спецификация">Спецификация</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Specification</th>
<th scope="col">Status</th>
<th scope="col">Comment</th>
</tr>
<tr>
<td>{{SpecName('ES6', '#sec-promise.resolve', 'Promise.resolve')}}</td>
<td>{{Spec2('ES6')}}</td>
<td>Initial definition in an ECMA standard.</td>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-promise.resolve', 'Promise.resolve')}}</td>
<td>{{Spec2('ESDraft')}}</td>
<td></td>
</tr>
</tbody>
</table>
<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2>
<p>{{Compat("javascript/promise","Promise.resolve")}}</p>
<h2 id="Смотрите_также">Смотрите также</h2>
<ul>
<li>{{jsxref("Promise")}}</li>
</ul>
|