gpt4 book ai didi

node.js - 如何在一个请求中使用两次或多次回调发送响应

转载 作者:太空宇宙 更新时间:2023-11-03 23:02:43 25 4
gpt4 key购买 nike

我使用的是 Express,请求 POST 看起来像这样

router.post('/', function(req, res, next){
var data = req.body;
getRandom(data, function(value){
res.json({value: value});
});
});

POST通过ajax发送,然后用新数据更新textarea。

 $.ajax({
type: "POST",
url: "/",
data: JSON.stringify(datareq),
dataType: 'json',
contentType: 'application/json',
success: function(x){
$.each(x, function(index, value) {
$('.textarea').append(value + '\n');
});
},
error: function(x) {
console.log(x + 'error');
}
});

如何使用一个 POST 和一些响应来发送此信息。当 cb 完成时,用户在 textarea 中收到一个数据,然后收到另一数据,依此类推直到结束。

<textarea>
data 1 - 1sec
data 2 - 2sec leater
data 3 - 3 second later
...
</textarea>

我添加时间(1秒...)只是为了表明回调需要做很多事情才能发送另一个响应。

当然这不起作用,因为 res.send() 关闭连接并且我收到错误

那么如何实现我的想法,在发布请求后同时发送。我想非常快地提供用户数据,然后在准备好后提供另一数据,而不是等待所有数据,然后发送响应。

最佳答案

你不能

<小时/>

原因:

Http 在发送响应后关闭连接。您不能保持它打开并向客户端发送多个响应。 HTTP 不支持。

解决方案 1:

只需在客户端放置一个计时器并定期请求即可。

解决方案 2(推荐):

使用socket,并通过它传递数据。 socket.ionodejs应用程序的套接字库。这是非常容易使用。建立连接,不断从服务器发送数据并在客户端接收。

<小时/>

只是为了添加答案。这个answer解释了为什么 res.send 关闭连接。

关于node.js - 如何在一个请求中使用两次或多次回调发送响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43365622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com