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
139
140
141
142
143
144
145
146
147
148
149
150
151
|
---
title: Promise.resolve()
slug: Web/JavaScript/Reference/Global_Objects/Promise/resolve
tags:
- ECMAScript 2015
- JavaScript
- Promise
- metodo
translation_of: Web/JavaScript/Reference/Global_Objects/Promise/resolve
original_slug: Web/JavaScript/Referencia/Objetos_globales/Promise/resolve
---
<div>{{JSRef}}</div>
<p>El método <code><strong>Promise.resolve(value)</strong></code> retorna un objeto {{jsxref("Promise")}} que es resuelto con el valor dado. Si el valor es una <em>promise</em>, esa <em>promise </em>es devuelta; si el valor es un <em>thenable </em>(si tiene un {{jsxref("Promise.then", "método \"then\"")}}), el valor devuelto le seguirá a ese <em>thenable</em>, adoptando su estado; de otro modo la <em>promise</em> devuelta estará completada con el valor.</p>
<div>{{EmbedInteractiveExample("pages/js/promise-resolve.html")}}</div>
<p class="hidden">La fuente para esta demostración interactiva se encuentra en un repositorio de GitHub. Si te gustaría contribuir al proyecto de la demostración interactiva, por favor clona <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> y envíanos una <em>pull request</em>.</p>
<h2 id="Sintáxis">Sintáxis</h2>
<pre class="brush: js">Promise.resolve(value);
Promise.resolve(promise);
Promise.resolve(thenable);
</pre>
<h3 id="Parámetros">Parámetros</h3>
<dl>
<dt>value</dt>
<dd>Argumento por resolver por esta <code>Promise</code>. También puede ser una <code>Promise</code> o un <em>thenable</em> por resolver.</dd>
</dl>
<h3 id="Valor_retornado">Valor retornado</h3>
<p>Una {{jsxref("Promise")}} que es resuelta con el valor dado, o con la <em>promise </em>pasada como valor, si el valor era un objeto <em>promise</em>.</p>
<h2 id="Descripción">Descripción</h2>
<p>La función estática <code>Promise.resolve</code> retorna una <code>Promise</code> que es resuelta.</p>
<h2 id="Ejemplos">Ejemplos</h2>
<h3 id="Utilizando_el_método_estático_Promise.resolve">Utilizando el método estático <code>Promise.resolve</code></h3>
<pre class="brush: js">Promise.resolve('Éxito').then(function(value) {
console.log(value); // "Éxito"
}, function(value) {
// no es llamada
});
</pre>
<h3 id="Resolviendo_un_arreglo">Resolviendo un arreglo</h3>
<pre class="brush: js">var p = Promise.resolve([1,2,3]);
p.then(function(v) {
console.log(v[0]); // 1
});</pre>
<h3 id="Resolviendo_otra_Promise">Resolviendo otra <code>Promise</code></h3>
<pre class="brush: js">var original = Promise.resolve(33);
var cast = Promise.resolve(original);
cast.then(function(value) {
console.log('valor: ' + value);
});
console.log('original === cast ? ' + (original === cast));
// registros, en orden:
// original === cast ? true
// valor: 33
</pre>
<p>El orden invertido de los registros se debe al hecho de que los <em>handler </em><code>then</code> sean llamados asíncronamente. Vea cómo funciona <code>then</code> <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then#Return_value">aquí</a>.</p>
<h3 id="Resolviendo_thenables_y_arrojando_Errores">Resolviendo thenables y arrojando Errores</h3>
<pre class="brush: js">// Resolviendo un objeto thenable
var p1 = Promise.resolve({
then: function(onFulfill, onReject) { onFulfill('¡Completada!'); }
});
console.log(p1 instanceof Promise) // true, objeto convertido en una Promise
j
p1.then(function(v) {
console.log(v); // "¡Completada!"
}, function(e) {
// no es llamada
});
// Thenable arroja antes del callback
// Rechaza la Promise
var thenable = { then: function(resolve) {
throw new TypeError('Arrojando');
resolve('Resolviendo');
}};
var p2 = Promise.resolve(thenable);
p2.then(function(v) {
// no es llamada
}, function(e) {
console.log(e); // TypeError: Arrojando
});
// Thenable arroja después del callback
// Resuelve la Promise
var thenable = { then: function(resolve) {
resolve('Resolviendo');
throw new TypeError('Arrojando');
}};
var p3 = Promise.resolve(thenable);
p3.then(function(v) {
console.log(v); // "Resolviendo"
}, function(e) {
// no es llamada
});
</pre>
<h2 id="Especificaciones">Especificaciones</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Especificación</th>
<th scope="col">Estado</th>
<th scope="col">Comentario</th>
</tr>
<tr>
<td>{{SpecName('ES2015', '#sec-promise.resolve', 'Promise.resolve')}}</td>
<td>{{Spec2('ES2015')}}</td>
<td>Definición inicial en un estándar de ECMA.</td>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-promise.resolve', 'Promise.resolve')}}</td>
<td>{{Spec2('ESDraft')}}</td>
<td> </td>
</tr>
</tbody>
</table>
<h2 id="Compatibilidad_con_navegadores">Compatibilidad con navegadores</h2>
<p>{{Compat("javascript.builtins.Promise.resolve")}}</p>
<h2 id="Véase_también">Véase también</h2>
<ul>
<li>{{jsxref("Promise")}}</li>
</ul>
|