首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在使用`hapi`时,如何在响应结束时得到通知?

在使用`hapi`时,如何在响应结束时得到通知?
EN

Stack Overflow用户
提问于 2016-10-07 00:34:20
回答 3查看 423关注 0票数 0

我正在尝试将一些中间件从express迁移到hapi。下面是express中的内容

代码语言:javascript
运行
复制
const express = require('express')
const server = express()

server.use(function (req, res, next) {
  const start = Date.now()
  res.on('finish', () => {
    console.log('Timestamp', Date.now() - start)
  })

  next()
})

//...

在使用hapi时,我找不到一种很好的方法来在同一个闭包内响应完成时得到通知,这样我就可以使用我在请求开始时设置的初始数据……

我得到的最接近的是:

代码语言:javascript
运行
复制
const Hapi = require('hapi')
const server = new Hapi.Server()

server.ext('onPreResponse', (request, reply) => {
  const start = Date.now()
  request.response.once('finish', () => {
    console.log('Timestamp', Date.now() - start)
  })

  return reply.continue()
})

// ...

但是错误响应似乎将request.response设置为null,因此我无法向其添加侦听器。

有什么建议吗?

EN

回答 3

Stack Overflow用户

发布于 2016-10-07 01:41:07

代码语言:javascript
运行
复制
 server.ext('onPreResponse', function (request, reply) {
    request.response.once('finish', function () {    

    });   
    reply.continue(); 
});
票数 0
EN

Stack Overflow用户

发布于 2016-10-07 16:52:07

您可以使用request.raw.reqend事件:

代码语言:javascript
运行
复制
server.ext('onPreResponse', (request, reply) => {

    request.raw.req.once('end', () => console.log('DONE!!!'));
    return reply.continue();
});
票数 0
EN

Stack Overflow用户

发布于 2018-07-06 01:55:39

代码语言:javascript
运行
复制
request.response.events.once('finish', () => console.log('DONE!!!'));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39901335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档