八、ES6中async函数
语法结构
- 异步函数声明式
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(); // 通过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时不会因为执行执行时间不同而导致的结果不同。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小康博客!
评论
TwikooDisqusjs










