aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/javascript/reference/global_objects/promise/resolve/index.html
blob: f61fad91ec0190529d39559207cfd37f665183ba (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
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>