javascript async 和 await

关于 async

async 是 promise 的语法糖。函数前面加一个 async,异步操作的方法前加一个await 关键字。顾名思义,就是让你等一下,执行完了再继续往下走。注意 :await 只能在 async 函数中执行,否则会报错。

关于 await

await 的意思就是等待。

await 会等待 promise 的状态由 pending 转为 fulfilled 或者 rejected。在此期间它会阻塞,延迟执行await语句后面的语句。

示例代码

<script>
console.log('主线程开始');
function demo(){
	return new Promise((resolve, reject)=>{
		setTimeout(()=>{
			let randNumber = Math.random();
			console.log(randNumber);
			if(randNumber < 0.5){
				reject('执行失败');
				return ;
			}
			let result = 0;
			for (let i = 0; i < 900000000; i++){
				// your code 
				result = i;
			}
			resolve(result);
		}, 800);
	});
}
async function runDemo(){
	try{
		const data = await demo();
		console.log(data);
	}catch(error){
		console.log(error);
	}
}
runDemo();
console.log('其他逻辑');
</script>

通过上面的示例我们可以看到,可以通过 await 同样简化了异步嵌套逻辑、通过 try{}catch() 语法来捕获异步错误。