木灵鱼儿
阅读:1791
koa框架3 基础入门之 async、await
async和await可以理解为generator的升级,因为generator需要一个runner库来运行它,这样一来就很麻烦,所有就有了async,其用法差不多。
await后面接异步操作或者同步操作,但是绝对不能为空,然后这个函数function开头接一个async
用法如下:
async function show() {
let user = await $.ajax({
url: "xxx/api",
dataType: "json"
});
let items = null;
if (user.login) {
items = await $.ajax({
url: "xxx/api",
dataType: "json"
});
} else {
if (user.vip) {
items = await $.ajax({
url: "xxx/api",
dataType: "json"
});
} else {
items = await $.ajax({
url: "xxx/api",
dataType: "json"
});
}
}
console.log(items);
};
show();
async的函数可以像普通函数那样调用,极大的方便了代码书写。
awite后面接什么
- promise对象
- 另一个async函数
- 普通函数
- 一个值
但是绝对不能为空。空的话就会报错。
错误处理
如果awite后面报错了,我们怎么处理。
使用了async后,函数变成了同步操作,他没有异步回调了,所以我们只能通过try catch 来进行捕获错误。
async function show() {
try {
let user = await $.ajax({
url: "xxx/api",
dataType: "json"
});
let items = null;
if (user.login) {
items = await $.ajax({
url: "xxx/api",
dataType: "json"
});
} else {
if (user.vip) {
items = await $.ajax({
url: "xxx/api",
dataType: "json"
});
} else {
items = await $.ajax({
url: "xxx/api",
dataType: "json"
});
}
}
} catch (e) {
console.log("出现错误", e);
}
console.log(items);
};
在async函数里面,将所有操作丢在try里面,如果某一处出现错误,catch便会捕获这个错误,从而达到错误提示的效果。
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿 - 有梦就能远航站点。未经许可,禁止转载。

相关推荐
class 与 await结合
class As { constructor() {} then(resolve, reject) { setTimeout(() => { resolve(true); }, 3000) } } (async () => { const b = await new As(); console.log(b); })()
koa教程2 中间件和洋葱模型
koa的中间件通过new出Koa对象的use方法进行注册,每个注册的中间件其实就是一个函数,函数接收两个参数:ctx和next。ctx是上下文对象,是中间件共用的一个对象,也就是共享的对象,我在1中间件对这个ctx添加或者处理内容,再进过2中间件时,可以获取到1所做的所有处理后的结果。next是一个回调函数,他是运行下一个中间件的关键,如果没有next,那么运行就结束在当前中间件中。也正是这个next,才能达到koa所提倡的洋葱模型。const Koa = require("koa"); const app = new Koa(); app.use((ctx, ne...

都覆盖
QQ Browser Windows 10都覆盖