语法结构
- 异步函数声明式
async function name([param]){}
- 异步函数表达式
let name = async function([param]){}
用法示例:
async function myAsync() {
return "hello world";
}
let promise = myAsync();
promise.then((value) => {
console.log(value); // hello world
});
await表达式
await
表达式用于等待一个Promise
对象,它只能在异步函数中使用。
[return_value] = await expression;
-
return_value
返回Promise对象的处理结果。如果等待的不是Promise对象,则返回该值本身。
-
expression
一个Promise对象或者任何要等待的值
function createPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("执行成功了!");
}, 200);
});
}
async function myAsync() {
console.log("当前异步函数");
var result = await createPromise();
console.log(result);
}
myAsync(); //
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XfvOPawg-1603956424217)(https://rmt.dogedoge.com/fetch/tzk/storage/20201027094646.png?w=1280&fmt=jpg)]
通过await处理报错。
function createPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject("执行成功了!");
}, 200);
});
}
async function myAsync() {
console.log("当前异步函数");
try {
var result = await createPromise();
} catch (e) {
console.log("出错了", e);
}
console.log(result);
}
myAsync();
处理多个promise
let promise1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("one");
}, 300);
});
let promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("two");
}, 200);
});
let promise3 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("three");
}, 100);
});
async function myAsync() {
let result1 = await promise1;
console.log(result1);
let result2 = await promise2;
console.log(result2);
let result3 = await promise3;
console.log(result3);
}
myAsync(); // one two three
在处理多个promise时不会因为执行执行时间不同而导致的结果不同。