У меня есть спецификация от клиента для реализации метода в модуле:
// 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;
};
Можно ли дать обещание вернуть данные, найденные в жанрах? Есть ли лучший способ получить описание спецификации?
javascript
sealocal
источник
источник
resolve([genre1, genre2, ...]);
внутри реализации обещания.Ответы:
Похоже, вы не понимаете, как используются обещания. Вы возвращаете обещание. Затем, позже, когда ваш код разрешает обещание, он разрешает его с результатом, и этот результат передается
.then()
обработчику, прикрепленному к обещанию:источник
Обновленная версия с использованием,
await
а не.then()
.await
прекращает выполнение до тех пор, пока Обещание не будет разрешено (то есть не будет иметь значения). В отличие от использования,.then()
вы можете просто сохранятьawait
значения, когда запускаете различные функции, которые возвращают обещания, и выполнение продолжается на следующей строке (это называется «прямой стиль»). На это также гораздо приятнее смотреть, поскольку он согласуется с остальным JavaScript, чем.then()
везде.Await поддерживается во всех текущих браузерах и узлах
источник