koa返回前端响应后,后台静默做其他操作

2023-10-28

需求描述

后端使用Koa框架,需要接收到请求后立即给予前端响应,后续由后端继续做其他异步调用API的操作

遇到的问题

Koa中返回前端响应的方式有两种,一种是直接return你需要的响应参数;另一种则是设置响应body,接口方法走完后就会自动响应到前端
但是需求是需要在响应后继续做其他异步操作,如果在异步操作前return了,则后续的代码都不会执行;如果在异步操作前设置响应body,则也需要在异步操作走完之后,才会给到前端响应

如何解决

一、先写一个模拟异步调用API操作的方法

/**
 * 模拟异步调用API函数
 * @param time 响应时间(毫秒)
 */
function wait(time) {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve()
    }, time)
  })
}

二、以同步的方式去调用异步方法
假设await wait(5000)是后续需要进行的操作,我们将其封装到异步函数followUpUpload中,以同步的方式去调用它

// 响应后续上传操作模拟函数
async function followUpUpload() {
  // do something 后续操作
  await wait(5000)
}

// 测试接口
router.post('/test', async (ctx) => {
  try {
    followUpUpload() // 只需要在返回响应之前,调用该函数即可
    return ctx.success('调用成功')
  } catch (err) {
    return ctx.fail(err)
  }
})

这样做的话,就能达到返回前端响应后,后端继续做一些额外的异步操作的需求了

Keep learning…

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

koa返回前端响应后,后台静默做其他操作 的相关文章

  • 返回上一页

    我正在使用表格来 评价 页面 此表单将数据 发布 到其他地方的 php 脚本 我只是想在处理表单后显示一个链接 这将使用户返回到上一页 我可以在 php 脚本中使用 javascript 来执行此操作吗 GF 您可以使用链接来调用histo
  • 如何在 mongodb 聚合管道中使用 Javascript 对象?

    我有一个 JS 对象norm我想在 mongo 聚合管道中使用它 如下所示 var norm 1 1 2 1 16 3 1 413 4 1 622 5 1 6 6 1 753 7 3 001 8 2 818 9 3 291 10 2 824
  • jQuery UI Datepicker 奇怪的行为

    我在使用 jqueryUI 使用简单的日期选择器时遇到了一个奇怪的问题 我只想显示两个月的日历 包括上个月和当前月份 我使用了这段代码 function picker datepicker numberOfMonths 2 showCurr
  • Visual Studio 改变 Ctrl-K-D 的工作方式

    In Visual Studio I m using 2012 is there any way of editing the way that Ctrl K D combinations handles its Auto Formatti
  • 仅在 Chrome 上我收到此错误:Uncaught TypeError: Illegal constructor [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 当我在 Chrome 上加载 jQuery 时 我会收到此错误 Uncaught TypeError Illegal constr
  • 如何将类型添加到 Vite 库构建中?

    我按照vite文档使用图书馆模式 https vitejs dev guide build html library mode我能够生成一个工作组件库 我创建了该项目vue ts预设 在我的组件中 我定义了道具及其类型 并使用了一些接口 但
  • Node.js Express 4.0 中的 res.render 回调参数的用途是什么?

    目的是什么res render回调参数 在什么情况下 由于模板已被指定为第一个参数 因此人们会想要使用这样的回调参数 这是文档中的代码 send the rendered view to the client res render inde
  • 如何在 JavaScript 中将变量的内容写入文件[重复]

    这个问题在这里已经有答案了 可能的重复 firefox 如何启用本地 JavaScript 来读取 写入我的 PC 上的文件 https stackoverflow com questions 2846045 firefox how to
  • 修改 Twitter 帖子上可编辑 Div 的内容

    我正在编写一个 chrome 扩展 它可以帮助用户在 Twitter 上输入内容 当在 twitter 上写推文时 twitter 会打开一个可编辑的 div 容器 当用户输入内容时 twitter 大概正在使用某些网络框架 会生成子 di
  • Rangy:插入符号下的单词(再次)

    我正在尝试创建一个预输入代码以添加到 wysihtml5 富文本编辑器 基本上 我需要能够插入人员 标签引用 例如 Twitter Github Facebook 我发现一些人试图实现同样的事情的代码 http jsfiddle net A
  • 函数不会等到 Promise 得到解决

    我正在开发一个简单的不和谐机器人 我正在尝试打印有关某个玩家的一些一般数据 我最近了解了 async await 并尝试将其实现到我的代码中 然而 它似乎不起作用 因为当我第一次触发此代码时 它会打印 null 但在后续触发时 它将打印正确
  • 电子应用程序可以播放本地支持的任何视频吗?

    我知道浏览器通常会限制玩家mp4 and webm类型的媒体 但我想知道基于电子的应用程序是否可以运行 MKV 和 AVI 等格式的本地视频 我找不到明确的来源来告诉我什么是可用的 什么是不可用的 Electron 仍然仅限于网络技术 这意
  • 如何在具有相同值的下拉菜单上触发 jQuery 更改事件

    即使用户选择相同的值 如何每次都触发 jQuery 更改事件 我需要刷新效果 例如如果用户选择Lawyer它会发出警报hello然后用户再次选择Lawyer从下拉菜单中 它应该发出警报hello 我怎样才能实现它 以下是代码 jQuery
  • 如何按 Angular 表中的属性(该属性具有单个 rownspan)进行分组?

    我没有找到这个问题的合适标题 我的问题是 例如 我有一个包含两列的表 列汽车品牌和列汽车型号 我希望表是 like in this picture 换句话说 品牌名称只会出现 1 次 我的输入数组采用以下 json 格式 brand Aud
  • D3 向对象添加超链接?

    我正在尝试制作 D3 图 它将代表我网站的菜单 我尝试按照此处的其他指南添加超链接 但它们都不起作用 每个对象都会有一个不同的 URL 指向 主页 关于 联系方式等 如果添加超链接 我可以拖动对象吗 这意味着如果我按住单击 如果我单击该对象
  • 如何在新窗口中打开图像或pdf文件?

    我有一个 gridview 它包含文件名和文件路径 图像和 pdf 格式文件 其中我使用了模板字段 在该字段下放置了 1 个图像按钮 单击该图像按钮 即 查看 按钮 时 我想在新窗口中打开所选文件 这是我的代码 protected void
  • 如何使用 GreaseMonkey 让浏览器恢复“/”键?

    Lots of web pages seem to use the key for searching I d like to disable that because 100 of the time I want to use to se
  • AngularStrap 工具提示禁用我的自定义指令

    我正在尝试让 bs tooltip AngularStrap 指令与我自己的名为 checkStrength 的自定义指令一起使用 该指令检查密码的强度 单独使用这些指令中的任何一个时 它们都可以正常工作 但不能一起工作 This http
  • 选择单选按钮时隐藏/显示 3 个文本框

    我有 2 个单选按钮 选择一个文本框时 我想显示 3 个文本框 并在选择其他文本框时隐藏它 这是代码 这是我的 2 个单选按钮
  • 使用 File API polyfill 读取数据 URL

    我正在尝试使用文件 API 库 https github com mailru FileAPI https github com mailru FileAPI 作为不支持文件 API 的浏览器的后备 以便将文件作为数据 URL 读取并将其传

随机推荐

  • 分享一个放烟花的特效

    先看效果 再看代码
  • 如何mock系统调用

    背景 Linux下开发存储系统 网络库的时候会用到一系列Linux的系统调用 每一个系统调用都有一些出错的场景 有些场景很极端 比如内存使用达到上限 磁盘写满等 如果对其进行测试的话 很难去构造这样的一个场景 这个时候集成测试就显得力不存心
  • React如何从后端获取数据并渲染到前端?

    React js 自己的定位是 A JavaScript Library for building user interface 它的文档称许多人将它用作 MVC 的 V 因此 React js 不关心你是如何嵌入后端数据的 换句话说 我们
  • css进阶(背景颜色渐变、过渡)

    css进阶 背景颜色径向渐变 背景颜色线性渐变 过渡 折叠效果 背景颜色径向渐变 径向渐变 中间部分椭圆形 四周填充 由中间到四周渐变 background radial gradient red yellow 红椭圆填充黄色 backgr
  • 在vue3中使用富文本编辑wangEditor上传自定义图片

    富文本编辑器wangEditor的安装和使用我就不在这里做介绍了 大家可以去官网进行查看 wangeditor官网 https www wangeditor com 接下来 进入主题 上传本地图片到后端 后端返回图片地址 在插入编辑器中 c
  • Install Google-Chrome

    首先将google的yum源下载下来 google并没有直接提供yum源 而是以sh文件的方式提供 那么就下载这个文件 使用以下地址来下载文件 https dl ssl google com linux google repo setup
  • leetcode----JavaScript 详情题解(1)

    目录 2618 检查是否是类的对象实例 2619 数组原型对象的最后一个元素 2620 计数器 2621 睡眠函数 2622 有时间限制的缓存 2623 记忆函数 2625 扁平化嵌套数组 2626 数组归约运算 2627 函数防抖 261
  • mdltxdy && mjj的英语单词(4.2洛谷比赛中的字符串问题)

    enmmmm我的字符串是真的凉啊orz 导致我到现在都怀疑那位负责出题的mjj是不是故意在卡我QAQ 好啦话不多说 上题 1 mdltxdy 字符串替换问题 题意描述 mdl每天都在小分队里面被刷屏 因此她急切的找到了你希望你写一个程序屏蔽
  • 利用gdb调试nginx

    利用gdb调试nginx 1 打开nginx调试 首先修改 auto cc conf文件 将ngx compile opt c 改为ngx compile opt c g 打开debug模式进行编译 简单操作如下 sudo configur
  • 图结构的基础实现(java)

    package graph import edu princeton cs algs4 Bag import edu princeton cs algs4 In public class Graph private final int V
  • NCL windows系统安装

    http www doc88 com p 192266283281 html NCL在Linux下的安装非常容易 只需下载适当版本的文件 设置好环境变量即可使用 NCL在Windows下的安装则要麻烦一些 需要先安装一个虚拟Linux环境
  • python3 [爬虫入门实战]爬虫之scrapy爬取织梦者网站并存mongoDB

    主要爬取了编程栏目里的其他编程里的36638条数据 过程是自己一步一步的往下写的 有不懂的也是一边找笔记 一边百度 一边调试 遗憾 没有进行多栏目数据的爬取 只爬了一个栏目的数据 希望有想法的有钻研精神的可以自己去尝试爬取一下 难度应该不会
  • [Process] kill() returned unexpected error 1

    Process kill returned unexpected error 1 系统CatAlina xcode版本11 3 iOS 13 3运行的时候会出现 Process kill returned unexpected error
  • 【计算机视觉

    文章目录 一 分割 语义相关 9篇 1 1 OpenIns3D Snap and Lookup for 3D Open vocabulary Instance Segmentation 1 2 dacl10k Benchmark for S
  • CRNN+CTC实现不定长验证码识别(keras模型-示例篇)

    目录 前言 运行环境 生成数据集 构建网络模型 训练模型 测试模型 错误集锦 结语 前言 本文的重心在于如何使用以tensorflow作为后端的keras构建一个使用CTC为loss的简化版CRNN 同时指出构建过程中容易出错的地方 让像我
  • vscode使用delve调试golang程序

    环境配置 delve仓库 含有教程 https github com go delve delve golang的debugging教程 https github com golang vscode go wiki debugging gt
  • Can you answer these queries VI 【SPOJ - GSS6】【Splay 最大子段和】

    题目链接 这道题很容易看到 它是把操作给放到了Splay上面来做的 其实主要改变的就是一些pushup 里面的细节 左右子树没有节点的时候 可千万不要再去比较了 会WA死 呜呜呜 当时一直以为自己哪里没考虑到 后来一想 好像就是左右儿子节点
  • javascript打开新窗口并获取新窗口值

    这种文章以前我有写过 就是点击弹出新窗口再在新窗口做操作 然后再把值利用js parent iframe formname inputname value这样就现实新页面传值了 下面我们总结了几个常用的方法 方法一 主页面打开新窗口js 事
  • 为甲方降低10倍安全成本,下一代零信任怎么做?

    企业为了更好地发展全力奋斗 却也可能被看不见的安全隐患拖后腿 数据泄露 勒索病毒时有发生 其中 人 是办公安全的薄弱环节 员工办公期间可以接触到企业的重要数据 一旦被突破可能给企业带来巨大损失 一面是越来越复杂的网络安全局面 一面是大而全的
  • koa返回前端响应后,后台静默做其他操作

    需求描述 后端使用Koa框架 需要接收到请求后立即给予前端响应 后续由后端继续做其他异步调用API的操作 遇到的问题 Koa中返回前端响应的方式有两种 一种是直接return你需要的响应参数 另一种则是设置响应body 接口方法走完后就会自