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

需求描述

后端使用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…

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值