异步函数的实例分享
导读: 异步函数 异步函数(async function)是 ECMAScript 2017 (ECMA-262 标准的规范,几乎被所有浏览器所支持,除了 Internet Explorer。 在 Promise...
异步函数
异步函数(async function)是 ECMAScript 2017 (ECMA-262) 标准的规范,几乎被所有浏览器所支持,除了 Internet Explorer。
在 Promise 中我们编写过一个 Promise 函数:
实例
function print(delay, message) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
console.log(message);
resolve();
}
, delay);
}
);
}
然后用不同的时间间隔输出了三行文本:
实例
print(1000, "First").then(function () {
return print(4000, "Second");
}
).then(function () {
print(3000, "Third");
}
);
我们可以将这段代码变得更好看:
实例
async function asyncFunc() {
await print(1000, "First");
await print(4000, "Second");
await print(3000, "Third");
}
asyncFunc();
哈!这岂不是将异步操作变得像同步操作一样容易了吗!
这次的回答是肯定的,异步函数 async function 中可以使用 await 指令,await 指令后必须跟着一个 Promise,异步函数会在这个 Promise 运行中暂停,直到其运行结束再继续运行。
异步函数实际上原理与 Promise 原生 API 的机制是一模一样的,只不过更便于程序员阅读。
处理异常的机制将用 try-catch 块实现:
实例
async function asyncFunc() {
try {
await new Promise(function (resolve, reject) {
throw "Some error";
// 或者 reject("Some error")
}
);
}
catch (err) {
console.log(err);
// 会输出 Some error
}
}
asyncFunc();
如果 Promise 有一个正常的返回值,await 语句也会返回它:
实例
async function asyncFunc() {
let value = await new Promise(
function (resolve, reject) {
resolve("Return value");
}
);
console.log(value);
}
asyncFunc();
程序会输出:
Return value
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 异步函数的实例分享
本文地址: https://pptw.com/jishu/655751.html
