Короткий ответ: да . Ожидание превращает это в обещание. Вы можете сказать что-то вроде
// not asynchronous; not a promise
function foo() { return 3; }
. . .
async function do_it() {
const x = await foo();
}
foo()
, по сути, оборачивается чем-то вроде
new Promise( (resolve, reject) => {
try {
resolve(foo());
} catch (err) {
reject(err);
}
}
Таким образом, вы можете сказать что-то вроде:
const sleep = ms => new Promise( resolve => setTimeout( () => resolve(), ms) );
async function waiting() {
await sleep(1000);
const a = await computeA();
await sleep(2000);
const b = await computeB();
await sleep(3000);
const c = await computeC();
console.log(a, b, c)
}
async
/ await
позволяет express вещей более процедурно выглядеть. Он также передает событие l oop: другие вещи могут продолжать обработку, пока вы ждете.