关于 koa2 中的 async/await
About async/await in koa2
我在koa2中使用async/await
如下
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx, next) => {
await next()
console.log("1------>"+Date.now())
});
app.use(async (ctx, next) => {
await next()
console.log("2------>"+Date.now())
});
app.use(async (ctx, next) => {
await next()
console.log("3------>"+Date.now())
});
app.use(async (ctx, next) => {
await next()
console.log("4------>"+Date.now())
});
app.listen(3000);
运行这段代码,我会这样获取日志
4------>1526575713792
3------>1526575713794
2------>1526575713795
1------>1526575713795
这是我的问题
app.use(async (ctx, next)
中的next
是什么函数?
每个app.use
函数中的await next()
表示wait, please run the next app.use first
,如果没有下一个app.use
,忽略它,运行最后 app.use
函数中的代码,我说得对吗?
如果我把第一个app.use
改成app.use(async (ctx) => { console.log("1------>"+Date.now())});
,然后运行,结果只有一条1------>1526576945380
。我以为第二个app.use
函数会继续运行ning,我会得到这样的结果
1------>1526576945360
4------>1526575761869
3------>1526575761869
2------>1526575761869
那么,有人可以帮助我吗?并为我解释?非常感谢。
- 是的
next
是一个函数,console.log(typeof next)
会向您展示。
- 是的,调用
next
将指示 koa 执行使用例如注册的下一个中间件。 use
和 returns 下一个中间件解析后立即解析的 Promise,await
在 next
前面,您的代码将在那里等待,直到 Promise 完成已解决。
- 为什么您期望调用
use
注册的下一个中间件?你不调用 next
所以你 terminate 在这个中间件中。 await
是一个等待 Promise 被解析的 js 函数。 next
是执行下一个中间件的 koa 功能。
我在koa2中使用async/await
如下
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx, next) => {
await next()
console.log("1------>"+Date.now())
});
app.use(async (ctx, next) => {
await next()
console.log("2------>"+Date.now())
});
app.use(async (ctx, next) => {
await next()
console.log("3------>"+Date.now())
});
app.use(async (ctx, next) => {
await next()
console.log("4------>"+Date.now())
});
app.listen(3000);
运行这段代码,我会这样获取日志
4------>1526575713792
3------>1526575713794
2------>1526575713795
1------>1526575713795
这是我的问题
app.use(async (ctx, next)
中的next
是什么函数?
每个await next()
表示wait, please run the next app.use first
,如果没有下一个app.use
,忽略它,运行最后app.use
函数中的代码,我说得对吗?如果我把第一个
app.use
改成app.use(async (ctx) => { console.log("1------>"+Date.now())});
,然后运行,结果只有一条1------>1526576945380
。我以为第二个app.use
函数会继续运行ning,我会得到这样的结果1------>1526576945360
4------>1526575761869
3------>1526575761869
2------>1526575761869
app.use
函数中的那么,有人可以帮助我吗?并为我解释?非常感谢。
- 是的
next
是一个函数,console.log(typeof next)
会向您展示。 - 是的,调用
next
将指示 koa 执行使用例如注册的下一个中间件。use
和 returns 下一个中间件解析后立即解析的 Promise,await
在next
前面,您的代码将在那里等待,直到 Promise 完成已解决。 - 为什么您期望调用
use
注册的下一个中间件?你不调用next
所以你 terminate 在这个中间件中。await
是一个等待 Promise 被解析的 js 函数。next
是执行下一个中间件的 koa 功能。