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