📜  Node.js http.ServerResponse.writeProcessing() 方法(1)

📅  最后修改于: 2023-12-03 14:44:39.221000             🧑  作者: Mango

Node.js http.ServerResponse.writeProcessing() 方法

http.ServerResponse.writeProcessing() 方法在 HTTP 响应中插入"HTTP/1.1 102 Processing"状态码和可选的标题,表示服务器正在执行一个异步操作且无法将响应发送给客户端。

该方法适用于使用 HTTP/1.1 协议的服务器,它告诉客户端继续等待响应而不是关闭连接。

语法
response.writeProcessing([headers])
参数
  • headers:一个可选的对象,包含要添加到响应中的标题(可选)。
返回值

http.ServerResponse.writeProcessing() 方法返回一个 Boolean,表示标题已成功添加到响应中。

示例

以下示例演示如何在 Node.js 中使用 http.ServerResponse.writeProcessing() 方法。

const http = require('http');

const server = http.createServer((request, response) => {
  response.writeProcessing({ 'Content-Type': 'text/plain' });
  
  // 模拟长时间运行的异步操作
  setTimeout(() => {
    response.writeHead(200, { 'Content-Type': 'text/plain' });
    response.end('Hello, World!');
  }, 5000);
});

server.listen(3000);
console.log('Server is running on port 3000');

在上面的示例中,当客户端请求服务器时,http.ServerResponse.writeProcessing() 方法将添加一个包含状态码 102 和可选标题 'Content-Type': 'text/plain' 的响应。此后,服务器将执行一个模拟耗时 5 秒的异步操作,然后发送普通的 HTTP 响应。

注意事项
  • http.ServerResponse.writeProcessing() 方法适用于使用 HTTP/1.1 协议的服务器,不适用于使用 HTTP/1.0 协议的服务器。
  • 只有在服务器正在执行长时间运行的异步操作时才应使用 http.ServerResponse.writeProcessing() 方法,否则可能会导致客户端出现不必要的等待时间。
  • 如果未指定标题,则会使用一个空对象,直到响应完成时才会发送 HTTP 正文。