// MDN: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/async_function
// async await 是基于promises的语法糖,使异步代码更易于编写和阅读。
// 通过使用它们,异步代码看起来更像是老式同步代码
/***
* async 关键字,放在函数声明之前,使其成为 async function
* 调用该函数会返回一个 promise
* ***/
async function hello() {
return 'Hello'
}
hello().then(s => {
console.log(s)
})
hello().then(console.log)
/*****
* await 关键字 只在async function里面才起作用。
* 它可以放在任何异步的,基于 promise 的函数之前。
* await 关键字使JavaScript运行时暂停于此行,允许其他代码在此期间执行,直到异步函数调用返回其结果。一旦完成,您的代码将继续从下一行开始执行。
* ****/
async function hello2() {
return await Promise.resolve("Hello2");
};
hello2().then(console.log);
/****
* await 普通值
* ***/
async function hello3() {
return await 'Hello3'
};
hello3().then(console.log)
/***
* 添加错误处理 可添加try...catch 或者 在hello4().catch中处理
* ***/
async function hello4(a) {
a / b
return await 'Hello4'
}
hello4().then(console.log).catch(e => {
console.log('出错了...', e)
})
// 没有使用async的普通函数,使用await会报错
// function testAwait() {
// // 报错1
// await Promise.resolve(2)
// return new Promise((resolve, reject) => {
// // 报错2
// await Promise.resolve(2)
// resolve(4)
// })
// }