У меня есть спецификации от клиента для реализации метода в модуле:
// getGenres():
// Returns a promise. When it resolves, it returns an array.
Если дан массив жанров,
['comedy', 'drama', 'action']
Вот метод, скелет с обещанием:
MovieLibrary.getGenres = function() {
var promise = new Promise(function(resolve, reject) {
/* missing implementation */
});
return promise;
};
Может обещание быть возвращены данные, найденные в жанрах? Есть ли лучший способ для достижения описание спецификаций?
Это звучит, как вы'т использовать понимание того, как обещания. Вы вернетесь обещание. Потом, позже, когда ваш код решает обещание, он обрабатывает ее с результатом, и этот результат передается .затем обработчик()
добавленные к обещанному:
MovieLibrary.getGenres = function() {
var promise = new Promise(function(resolve, reject) {
/* missing implementation */
resolve(result);
});
return promise;
};
MovieLibrary.getGenres().then(function(result) {
// you can access the result from the promise here
});
Обновленная версия, используя ждать
, а не .тогда()
.
ждут
прекращает свое выполнение до тех пор, пока обещание решен (т. е. имеет значение). В отличие от использования .тогда()
вы можете просто дождаться значения передоза, как вы выполнять различные функции, которые возвращают обещания, и выполнение продолжается на следующей строке (это называется 'прямой стиль). Это's также намного лучше посмотреть , так как это's в соответствие с остальными на JavaScript, чем.тогда()` везде.
// Example function that returns a Promise that will resolve after 2 seconds
var getGenres = function() {
return new Promise(function(resolve) {
setTimeout(function(){
resolve(['comedy', 'drama', 'action'])
}, 2000);
});
}
// We start an 'async' function to use the 'await' keyword
(async function(){
var result = await getGenres()
console.log('Woo done!', result)
// But the best part is, we can just keep awaiting different stuff, without ugly .then()s
var somethingElse = await getSomethingElse()
var moreThings = await getMoreThings()
})()
Ожидания поддерживается во всех современных браузерах и узел