Koa 中间件 API 极简实现

发布于 2023-09-30 23:00:48 字数 654 浏览 36 评论 0

很久前接触 Koa 的时候,觉得注册中间件( app.use )的 API 很有意思。最近面试时看到别人简历上提到 Koa,就随手出了面试题:Koa 中间件 API 实现。

面试结束后,我自己随手写了实现:

const app = {
  _middlewares: [],
  use(fn) {
    this._middlewares.push(fn)
  },
  run() {
    const next = (i) => {
      if (i >= this._middlewares.length) return
      this._middlewares[i](next.bind(null, i + 1))
    }
    this._middlewares[0](next.bind(null, 1))
  },
}

app.use((next) => {
  console.log(1)
  next()
  console.log(2)
})

app.use((next) => {
  console.log(3)
  next()
  console.log(4)
})

app.run() // log => 1 3 4 2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
29 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文