Просто преминавайки през това настойнически, и това ми пречи да разбера защо await
работи само в async
функция.
От урока:
Както беше казано, чакаме само работи във функцията async.
От моето разбиране, async
обвива връщащия обект функция в обещание, така че обаждащият се може да използва .then()
async function f() {
return 1;
}
f().then(alert); // 1
И await
просто чака обещанието да се установи в рамките на async
функция.
async function f() {
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("done!"), 1000)
});
let result = await promise; // wait till the promise resolves (*)
alert(result); // "done!"
}
f();
Струва ми се, че тяхното използване не е свързано, може ли някой да обясни?
Отговори:
0 за отговор № 1async
и await
са метални ключови думи, които позволяват на асинхронния код да бъде написан по такъв начин външност синхронно. Една async
функцията казва на компилатора преди време, че функцията ще се върне a Promise
и няма да има решение веднага. Да използвам await
и не блокирайте нишката async
трябва да използван.
async function f() {
return await fetch("/api/endpoint");
}
е еквивалентно на
function f() {
return new Promise((resolve,reject) => {
fetch("/api/endpoint")
.then(resolve);
});
}