on-finished, 当请求关闭结束或者错误时执行回调

分享于 

5分钟阅读

GitHub

  繁體 雙語
Execute a callback when a request closes, finishes, or errors
  • 源代码名称:on-finished
  • 源代码网址:http://www.github.com/jshttp/on-finished
  • on-finished源代码文档
  • on-finished源代码下载
  • Git URL:
    git://www.github.com/jshttp/on-finished.git
    Git Clone代码到本地:
    git clone http://www.github.com/jshttp/on-finished
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/jshttp/on-finished
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    已经完成

    NPM VersionNPM DownloadsNode.js VersionBuild StatusTest Coverage

    当HTTP请求关闭。结束或者错误时执行回调。

    安装

    这是一个通过注册中心注册中心提供的node.js 模块。 安装是使用 npm install 命令完成的:

    $ npm install on-finished

    API

    var onFinished =require('on-finished')

    onFinished ( res,侦听器)

    附加侦听器以侦听要完成的响应。 侦听器将只在响应完成时被调用一次。 如果响应完成了错误,第一个参数将包含错误。 如果响应已经完成,则调用侦听器。

    监听响应的结尾将用于关闭与响应相关的事情,如打开的文件。

    侦听器被调用为 listener(err, res)

    onFinished(res, function (err, res) {
     // clean up open fds, etc.// err contains the error if request error'd})

    onFinished ( 请求,侦听器)

    附加侦听程序以侦听要完成的请求。 当请求完成时,侦听器将只被调用一次。 如果请求完成了错误,第一个参数将包含错误。 如果请求已经完成,则调用侦听器。

    听到请求的结尾将用于知道在读取数据后何时继续。

    侦听器被调用为 listener(err, req)

    var data =''req.setEncoding('utf8')req.on('data', function (str) {
     data += str
    })onFinished(req, function (err, req) {
     // data is read unless there is err})

    onFinished.isFinished(res )

    确定 res 是否已经完成。 这对检查,甚至在响应已经完成时不启动某些操作是很有用的。

    onFinished.isFinished(req )

    确定 req 是否已经完成。 如果请求已经完成,这将非常有用,甚至不会启动某些操作。

    特殊 node.js-请求

    HTTP连接方法

    从 RFC 7231节 4.3.6中的CONNECT 方法的含义:

    连接方法请求收件人建立由请求目标标识的目标服务器的隧道,如果成功,则限制。 隧道通常用于通过一个或者多个代理创建end-to-end虚拟连接,然后可以使用 TLS ( 传输层安全性,[RFC5246] ) 对它的进行保护。

    在 node.js 中,这些请求对象来自HTTP服务器上的'connect' 事件。

    当这个模块在 HTTP CONNECT 请求上使用时,请求被立即认为是"已经完成",因为在接口数据库中的限制是 这意味着如果 CONNECT 请求包含请求实体,即使在读取请求之前,请求也将被视为"已经完成"。

    中没有响应对象,因此不支持该对象的响应。

    HTTP升级请求

    RFC 7230中的Upgrade 标头的含义,节 6.1:

    "升级"头field提供一个简单的机制,以便在同一连接上从 HTTP/1.1 转换到其他协议。

    在 node.js 中,这些请求对象来自HTTP服务器上的'upgrade' 事件。

    当这个模块使用带有 Upgrade 头的HTTP请求时,由于 node.js 接口事件的限制,请求将立即被视为"已经完成",这是由于在。 这意味着如果 Upgrade 请求包含请求实体,即使在读取请求之前,请求也将被视为"已经完成"。

    中没有响应对象,因此不支持该对象的响应。

    示例

    下面的代码确保一旦响应完成,文件描述符总是关闭的。

    var destroy =require('destroy')var fs =require('fs')var http =require('http')var onFinished =require('on-finished')http.createServer(functiononRequest (req, res) {
     var stream =fs.createReadStream('package.json')
     stream.pipe(res)
     onFinished(res, function () {
     destroy(stream)
     })
    })

    许可证


    CAL  EXE  调用  Request  EXEC  errors  
    相关文章