Tengo una especificación de un cliente para la implementación de un método en un módulo:
// getGenres():
// Returns a promise. When it resolves, it returns an array.
Si se le da una variedad de géneros,
['comedy', 'drama', 'action']
Aquí hay un método esqueleto con una promesa:
MovieLibrary.getGenres = function() {
var promise = new Promise(function(resolve, reject) {
/* missing implementation */
});
return promise;
};
¿Se puede hacer la promesa de devolver los datos encontrados en los géneros? ¿Hay una mejor manera de lograr la descripción de la especificación?
javascript
sealocal
fuente
fuente
resolve([genre1, genre2, ...]);
dentro de la implementación de la promesa.Respuestas:
Parece que no estás entendiendo cómo se usan las promesas. Vuelves una promesa. Luego, cuando su código resuelve la promesa, la resuelve con un resultado y ese resultado se pasa al
.then()
controlador adjunto a la promesa:fuente
Versión actualizada utilizando en
await
lugar de.then()
.await
deja de ejecutarse hasta que la Promesa se haya resuelto (es decir, tenga un valor). A diferencia del uso.then()
, puede mantenerawait
los valores a medida que ejecuta varias funciones que devuelven promesas, y la ejecución continúa en la siguiente línea (esto se llama 'estilo directo). También es mucho más agradable de ver, ya que es consistente con el resto de JavaScript, que en.then()
todas partes.Await es compatible con todos los navegadores y nodos actuales
fuente