JavaScript Асинхронный синтаксис
"async и await упрощают написание обещаний"
async заставляет функцию возвращать обещание
await заставляет функцию ждать обещания
Асинхронный синтаксис
Ключевое слово async
перед функцией заставляет функцию возвращать обещание:
Пример
async function myFunction() {
return "Привет";
}
Такой же как:
async function myFunction() {
return Promise.resolve("Привет");
}
Вот как использовать обещание:
myFunction().then(
function(value) { /* код в случае успеха */ },
function(error) { /* код в случае ошибки */ }
);
Пример
async function myFunction() {
return "Привет";
}
myFunction().then(
function(value) {myDisplayer(value);},
function(error) {myDisplayer(error);}
);
Попробуйте сами »
Или проще, поскольку вы ожидаете нормального значения (нормального ответа, а не ошибки):
Пример
async function myFunction() {
return "Привет";
}
myFunction().then(
function(value) {myDisplayer(value);},
);
Попробуйте сами »
Синтаксис ожидания
Ключевое слово await
перед функцией заставляет функцию ждать обещания:
let value = ждать обещания;
Ключевое слово await
, можно использовать только внутри async
функции.
Пример
Пойдем медленно и узнаем, как его использовать.
Базовый синтаксис
async function myDisplay() {
let myPromise = new Promise(function(myResolve, myReject) {
myResolve("Я люблю тебя !!");
});
document.getElementById("demo").innerHTML = await myPromise;
}
myDisplay();
Попробуйте сами »
Ожидание тайм-аута
async function myDisplay() {
let myPromise = new Promise(function(myResolve, myReject) {
setTimeout(function() { myResolve("Я люблю тебя !!"); }, 3000);
});
document.getElementById("demo").innerHTML = await myPromise;
}
myDisplay();
Попробуйте сами »
Ожидание файла
async function getFile() {
let myPromise = new Promise(function(myResolve, myReject) {
let req = new XMLHttpRequest();
req.open('GET', "mycar.html");
req.onload = function() {
if (req.status == 200) {myResolve(req.response);}
else {myResolve("File not Found");}
};
req.send();
});
document.getElementById("demo").innerHTML = await myPromise;
}
getFile();
Попробуйте сами »
Поддержка браузера
ECMAScript 2017 представил ключевые слова JavaScript async
и await
.
В следующей таблице определяется первая версия браузера с полной поддержкой обоих:
Chrome 55 | Edge 15 | Firefox 52 | Safari 11 | Opera 42 |
Декабрь, 2016 | Апрель, 2017 | Март, 2017 | Сентябрь, 2017 | Декабрь, 2016 |