【问题标题】:hapijs v18 send response before handler completionhapijs v18 在处理程序完成之前发送响应
【发布时间】:2019-10-23 01:52:32
【问题描述】:

我想在处理程序完成之前从我的 hapijs 处理程序发送响应。 我已经尝试过h.response().code(204).takeover(),但是在从处理程序显式返回并且文档建议相同之前,似乎不会发送响应。 我想立即返回 204,然后继续在处理程序中运行代码。发送响应后有没有办法继续处理? request.generateResponse() 的文档建议可以使用回复接口,但我认为这只是一个文档错误,因为回复接口链接回响应工具包文档。

【问题讨论】:

    标签: controller hapijs


    【解决方案1】:

    如果在返回响应之前调用了异步代码执行,则可以在响应发送后继续运行异步代码。

    async function someAsyncCode() {
      // Do processing
    }
    
    (request, h) => {
       someAsyncCode()
       return h.response('hello worl').code(204).takeover()   
    }
    

    由于您没有等待或返回承诺,因此“someAsyncCode”函数的执行不会阻塞执行流程。

    【讨论】:

      猜你喜欢
      • 2020-02-16
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 2019-07-19
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      相关资源
      最近更新 更多