# 关于async/await的执行问题

function wait() {
	return new Promise(resolve =>
		setTimeout(resolve, 100)
	)
}

async function main() {
	console.time();
	const x = await wait(); // 每个都是都执行完才结,包括setTimeout的执行时间
	const y = await wait(); // 执行顺序 x->y->z 同步执行,x 与 setTimeout 属于同步执行
	const z = await wait();
	console.timeEnd(); // default: 312.419ms
	
	console.time();
	const x1 = wait(); // x1,y1,z1 同时异步执行, 包括setTimeout的执行时间
	const y1 = wait(); // x1 与 setTimeout 属于同步执行
	const z1 = wait();
	await x1;
	await y1;
	await z1;
	console.timeEnd(); // default: 103.175ms
	
	console.time();
	const x2 = wait(); // x2,y2,z2 同步执行,但是不包括setTimeout的执行时间
	const y2 = wait(); // x2 与 setTimeout 属于异步执行
	const z2 = wait();
	console.timeEnd(); // default: 0.034ms
}
main();