需求描述 后端使用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)
}
})
这样做的话,就能达到返回前端响应后,后端继续做一些额外的异步操作的需求了
【Koa|koa返回前端响应后,后台静默做其他操作】Keep learning…
推荐阅读
- js|前端模糊查询当前列表
- vue|vue+xlsx实现表格的导入导出
- js|jsonp跨域
- vue|vue打包后dist的使用
- electron|electron修改vue项目打包后的exe图标
- vue|vuex的使用
- vue|vue中代理解决跨域
- JavaScript中通过style修改属性时需要添加“px”
- vue.js|vue开发搜索框防抖的优化和日常报错,