async会返回一个promise对象
async function testAsync() {
return "hello async";
}
const result = testAsync();
console.log(result); //Promise { 'hello async' }
await在等待它后面函数的返回值,其返回值会直接赋值给await的变量
await等待有两个结果
1.等到的是普通函数
那么会直接以同步代码执行
2.等到的是异步函数(promise)
那么会阻塞下面的代码,等待异步函数执行完成后再执行后面的代码
注意:async是一个异步函数,虽然函数内虽然会发生阻塞,但是只在async函数内发生,外部不会阻塞
function getSomething() {
return "something";
}
async function testAsync() {
console.log(123)
return Promise.resolve("hello async");
}
async function test() {
const v2 = await testAsync();
console.log(v2)
const v1 = await getSomething();
console.log(v1)
console.log(v1, v2);
}
// 123
// hello async
// something
// something hello async
// async function test() {
// const v2 = testAsync().then((e)=>{console.log(e)});
// console.log(v2)
// const v1 = await getSomething();
// console.log(v1)
// console.log(v1, v2);
// }
// 123
// Promise { <pending> }
// something
// something Promise { <pending> }
// hello async
test();