<script>
function testAwait (x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x);
console.log(x)
}, 20000);
});
}
console.log("222")
async function helloAsync() {
// async await 会等待testAwait()触发时候,再把x传入,如果不使用
// helloAsync 输出的x是unfind ,待定时器结束testAwait会输出x的值hello world
var x = await testAwait ("hello world");
console.log(x);
}
helloAsync ();
</script>
输出的顺序是:222 hello world hello world 其中2个hello world是定时器结束后一起打印
如果去掉下面的async和await,把定时器时间延长
<script>
function testAwait (x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x);
console.log(x)
}, 20000);
});
}
console.log("222")
function helloAsync() {
var x = testAwait ("hello world");
console.log(x);
}
helloAsync ();
输入的结果是 222
Promise[[PromiseState]]: “pending”[[PromiseResult]]: undefined
hello world
此时发现,如果不使用async,先打印的是console.log(“222”),然后触发testAwait 方法,因为里有定时器,所以先打印helloAsync中的x,最后等到定时器结束,打印出hello world