Koa 发送响应后运行代码

2024-01-26

为了优化响应延迟,需要执行以下工作after响应已发送回客户端。但是,我似乎可以在发送响应后运行代码的唯一方法是使用setTimeout。有没有更好的办法?也许在发送响应后在某个地方插入代码,或者在某个地方异步运行代码?

这是一些代码。

koa                  = require 'koa'
router               = require 'koa-router'

app = koa()

# routing
app.use router app

app
  .get '/mypath', (next) ->
    # ...
    console.log 'Sending response'

    yield next

    # send response???

    console.log 'Do some more work that the response shouldn\'t wait for'

不要打电话ctx.res.end(),它是 hacky 的并且规避了 koa 的响应/中间件机制,这意味着你也可以只使用express。 这是正确的解决方案,我也发布到https://github.com/koajs/koa/issues/474#issuecomment-153394277 https://github.com/koajs/koa/issues/474#issuecomment-153394277

app.use(function *(next) {
  // execute next middleware
  yield next
  // note that this promise is NOT yielded so it doesn't delay the response
  // this means this middleware will return before the async operation is finished
  // because of that, you also will not get a 500 if an error occurs, so better log it manually.
  db.queryAsync('INSERT INTO bodies (?)', ['body']).catch(console.log)
})
app.use(function *() {
  this.body = 'Hello World'
})

不需要ctx.end()
简而言之,做

function *process(next) {
  yield next;
  processData(this.request.body);
}

NOT

function *process(next) {
  yield next;
  yield processData(this.request.body);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Koa 发送响应后运行代码 的相关文章

  • gcc 没有小字符串优化吗?

    Most std string实现 包括 GCC 使用小字符串优化 例如 有一个answer https stackoverflow com a 21710033 2640636讨论这个 今天 我决定检查我编译的代码中的字符串在什么时候被移
  • 如何阻止直接访问我的 JavaScript 文件?

    我使用 Minify 来缩小并缓存所有脚本请求 我只希望我的用户能够访问 JavaScript 文件的缩小版本 缩小位于www example com min我的脚本位于www example com scripts 如何阻止直接访问doc
  • Vue 3 Composition API 提供/注入在单文件组件中不起作用

    我正在使用 Composition API 在 VueJS 3 中创建一个库 我实现了提供 注入 如中所述docs https v3 vuejs org guide composition api provide inject html i
  • 位置特征检测:固定

    我正在尝试找到一个脚本来检测设备是否放置position fixed元素相对于视口而不是整个文档 目前 标准桌面浏览器和 Mobile Safari 适用于 iOS 5 都是这样做的 而 Android 设备则相对于整个文档放置固定元素 我
  • Angular.js:如何从无序列表中获取 orderBy 或过滤器来工作?

    尝试根据价格和评级 在返回的对象中 进行排序 我宁愿用 ng click 和 li 来代替使用选择菜单 有没有办法做到这一点 我环顾四周 这是我能想到的最接近的 ul class restaurant filter li i class i
  • 使用 Node.js 构建网站的最佳实践

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我想知道如何使用 Node js 从头开始 开发一个网站 我明白我怎么能possibly
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • 如何使用 Greasemonkey 监视静态 HTML 页面的更改?使用哈希?

    我希望我的 Greasemonkey 脚本仅在其访问的静态页面具有与以前完全相同的内容时运行 现在我可以设置一个包含该页面哈希的变量 我正在寻找一种动态散列页面的方法 以便我可以将我的散列与生成的散列进行比较 关于如何即时实现散列的任何想法
  • JavaScript 继承;调用和原型

    要在Javascript中实现继承 通常需要执行以下两个步骤 假设我有一个基类 Animal var Animal function name this name name 我现在想从中派生一个子类 Dog 所以我想说 var Dog fu
  • JavaScript 中的 Promise 有什么意义?

    一个承诺是一个 可能现在可用 或将来可用 或永远不可用的值 来源 MDN 假设我有一个想要处理图片的应用程序 图片已加载 例如在算法在后台使用它之后 或某种其他类型的延迟 现在我想检查一下图片是否可以在future 通过使用承诺 而不是回调
  • JavaScript推送函数中的动态变量

    我在 JavaScript 中使用推送功能 var chartData for var i 0 i lt 3 i chartData push date new Date year s mon s date s hr s min s sec
  • IE 中的 XPath 查询使用从零开始的索引,但 W3C 规范是从一开始的。我应该如何处理差异?

    问题 我正在转换目前仅适用于 Internet Explorer 的相对较大的 Javascript 代码 以便使其也适用于其他浏览器 由于代码广泛使用 XPath 我们做了一些兼容性功能以使事情变得更容易 function selectN
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • JavaScript eval("{}") 返回行为?

    根据ECMA 262 规范 http www ecma international org publications files ECMA ST Ecma 262 pdf 以下语句返回1 eval 1 eval 1 eval 1 var a
  • 表单发布请求并存储收到的数据

    我有一个非常简单的表单 在提交时发出发布请求
  • 使用 Jade 评估自定义 javascript 方法 (CircularJSON)

    我想通过 Jade 将一个对象解析为客户端 JavaScript 通常这会起作用 script var object JSON parse JSON stringify object but my object is circular ht
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个

随机推荐

  • 如何针对 GitHub 问题上的特定分支

    我想知道是否可以目标问题到存储库的特定分支 使用案例 我有一个有 1 个主分支的仓库 和2个开发分支 A 和 B 根据问题的不同 其他分支会从 A 分支和 B 分支中生长出来 我已经知道可以通过 关键字和问题编号来引用问题提交 但我希望将其
  • 从 GitLab 运行程序/管道中创建版本

    随着 2019 年 1 月 Gitlab 11 7 的发布 我们获得了新的关键功能为您的项目发布版本 https about gitlab com 2019 01 22 gitlab 11 7 released publish releas
  • 如何本地化活动记录错误消息

    我试图找出如何本地化我的 Rails 应用程序中的错误项目名称 当用户使用不正确的数据注册时会出现该错误项目名称 我想出了如何覆盖消息 但不覆盖消息的名称 例如 password 登录 电子邮件 de activerecord errors
  • PowerShell - 在特定范围内执行脚本块

    我正在尝试在 Powershell 中实现像 BDD 框架一样的 RSpec Jasmine 或者至少研究制作一个框架的潜在问题 目前 我在实现简单的前后功能时遇到问题 给定 ErrorActionPreference Stop funct
  • 如何正确创建 Zend Feed?

    我已经成功创建了一个简单的 RSS 提要 但条目不断返回为未读和更新状态 并且每次我要求邮件更新提要时 从客户端删除的条目都会重新出现 我究竟做错了什么 我使用这个简单的函数来创建 rss feed public static functi
  • jquery 设置加载后的高度

    我在设置动态加载的元素的高度时遇到了一些麻烦 我用jqueryload函数将外部 动态 页面加载到当前页面上的 div cbox 中 因为这个子页面是动态的 所以我无法事先知道内容的高度是多少 我想在加载内容后获取高度 并将容器 div 的
  • Android dropbox api 需要重新验证

    在我的应用程序中 我使用 dropbox api 来保存一些文件 没问题 身份验证后 我关闭应用程序并重新启动应用程序 每次我打开应用程序时都需要重新身份验证 我希望应用程序记住我的会话 Dropbox 教程 https www dropb
  • CMake 中预期的构建失败测试

    有时最好检查某些东西是否无法构建 例如 Next line should fail to compile can t convert const iterator to iterator my new container type iter
  • 将部分参数列表传递给 do.call()

    我正在尝试编写一个函数来测试 GBM 模型的一系列超参数 我只希望 GBM 调用中的三个参数发生变化 其余的我想保持静态 do call似乎是答案 因为它接受参数列表并将它们传递给函数 然而 我不知道是否有办法 修复 一些我不想改变的论点
  • 确保启用“Google Maps Android API v2”。当我尝试实施 Google 地图时收到此错误

    我正在使用谷歌地图 但收到此错误 我做了以下事情 得到了我的 sha1 指纹 注册了我的项目并获得了我的项目密钥 我不知道如何启用 Google Maps Android API v2 因为我尝试过的所有链接都是旧的 并且 Google 已
  • 当 PHP 中的某个键被赋值时,数组是否会隐式创建?

    只是想快速验证这一点 它与我在其他语言中的直接经验不同 在其他语言中 必须首先声明数组 然后才能填充值 是的 PHP 将自动创建一个数组给定以下任何一个 foo bar foo 1 bar foo bar bar and of course
  • 更改每个像素的图像并保存到数据库

    我正在制作一个小网页游戏 我正在寻找一种方法来操作每个像素的图像并将其存储在 mysql 数据库中 准确地说 我需要能够执行以下操作 从 mysql 数据库加载图像 250 x 250px 到屏幕上 图像不可见 例如 每个像素的 alpha
  • 在 React 中通过 getBoundingClientRect 接收元素的尺寸

    我想以可靠的方式找出 DOM 元素的尺寸 我的考虑是使用 getBoundingClientRect 来实现此目的 const elementRef useRef
  • 我是否在某处读到过,C++/CLI 使我们走向一个没有“头文件”的社会,就像 Java 一样

    如果是这样 我在创建类时是否应该尽量减少头文件的使用 这可能晚了 3 年 但它仍然显示在谷歌搜索的顶部附近 并且该信息今天仍然有效 就像 3 年前一样 首先 是的 你是对的 对于 C CLI 除了本机 C 类 结构等之外 你不使用 h 文件
  • 实时主机上的 codeigniter 出现内部服务器错误

    我已经部署了一个在主 public html 文件夹中使用 CodeIgniter 的网站 http www myexample com 该项目在本地主机上完美运行 为了从 URL 中删除 index php 它具有以下 htaccess
  • 如何在iOS中添加android之类的toast?

    在android中我们可以直接添加toast 他们有什么方法可以在iOS中添加类似的toast吗 我创建了透明视图来用作吐司 但对于多种文本大小 我必须创建多个视图 iOS 中没有可用的 Android 类型 Toast 控件 如果你想使用
  • 引导程序验证不起作用

    我正在尝试使用验证引导程序 http bootstrapvalidator com 我尝试解决方案为here http jsfiddle net Tkbk9 但它不起作用
  • 确定哪些测试覆盖一行代码

    有没有办法确定可能执行给定代码行的单元测试集 换句话说 你能否自动确定不只是whether给定的行已被覆盖 但覆盖它的实际测试集是什么 考虑一个包含 50K 单元测试的大型代码库 显然 运行所有这些可能需要很长时间 即使不是几天 也可能是几
  • 应用程序配置(Spring?)

    我厌倦了所有这些无聊的样板代码来解析应用程序配置 如数据库连接 工作目录 API 端点等等 Spring IoC 看起来不错 但这将迫使我的应用程序的用户修改 XML 文件 只是为了编辑数据库 URL 等 这也可能非常分布在 XML 文件中
  • Koa 发送响应后运行代码

    为了优化响应延迟 需要执行以下工作after响应已发送回客户端 但是 我似乎可以在发送响应后运行代码的唯一方法是使用setTimeout 有没有更好的办法 也许在发送响应后在某个地方插入代码 或者在某个地方异步运行代码 这是一些代码 koa