Promise
async 函数的描述
async函数可能包含0个或者多个await
表达式。await表达式会暂停整个async函数的执行进程并出让其控制权,只有当其等待的基于promise的异步操作被兑现或被拒绝之后才会恢复进程。promise的解决值会被当作该await表达式的返回值。使用async
/ await
关键字就可以在异步代码中使用普通的try
/ catch
代码块。
await
关键字只在async函数内有效。如果你在async函数体之外使用它,就会抛出语法错误 SyntaxError
。
async
/await
的目的为了简化使用基于promise的API时所需的语法。async
/await
的行为就好像搭配使用了生成器和promise。
async函数一定会返回一个promise对象。如果一个async函数的返回值看起来不是promise,那么它将会被隐式地包装在一个promise中。
function sleep(duration) {
return new Promise(resolve => {
setTimeout(resolve, duration);
})
}
async function doa(value, duration) {
console.log(value);
await sleep(duration);
}
let count = 2;
void async function init() {
while (true && count--) {
await doa(1, 1000)
await doa(2, 2000)
await doa(3, 3000)
}
}
init()
asd
async function foo() {
const result1 = await new Promise((resolve) => setTimeout(() => resolve('1')))
const result2 = await new Promise((resolve) => setTimeout(() => resolve('2')))
}
foo()
最后更新于