javascript - Sapper 服务器路由 res.end 在“获取”功能完成之前不发送响应
问题描述
我在编写 Sapper 应用程序时遇到了问题,因此熟悉它可能有助于回答……尽管问题也可能是 polka(如 express)……我不确定。这就是我在这里的原因:-)
这是我遇到的问题的简化示例,我试图了解原因。它是返回一些 JSON 的 Sapper 服务器路由的代码。
export function get(req, res) {
let arr = [];
let count = 0;
let data = {"somekey": "someval"}
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify(data));
console.log('response sent');
while (count++ < 1000000000) {
arr.push(Math.random());
arr.pop();
}
console.log(arr[arr.length - 1]);
}
我希望这段代码:
- 将字符串化的 JSON 发送到客户端
- 服务器上的控制台日志“已发送响应”
- while 循环完成后,控制台记录服务器上数组的最后一个元素。
相反,它在服务器上控制台记录“发送的响应”,但客户端挂起并且服务器在 while 循环完成之前不会发送响应。
我认为 res.end 应该在到达 res.end 后立即发送响应,但它似乎继续前进,并且仅在“get”函数完成后才返回响应。
这是为什么?是 Sapper、Polka 还是我自己对 res.end 工作原理的误解?
解决方案
推荐阅读
- php - 在 EasyAdmin V3 上上传图片
- macos - torsocks 和 Apple 的系统完整性保护
- python - 在 matplolib 中插入一个矩阵
- c# - 列表在继承中为空(C#,Unity)
- git - 错误:错误:RPC 失败;curl 56 GnuTLS 接收错误 (-54)
- javascript - WP5 Module Federation:单例实例化多次
- c - 在 C 中,我怎样才能为我的平台获得适当的内存对齐?
- php - php8升级后laravel代客不起作用
- css - 仅当我们在模态内容之外单击时才关闭覆盖
- python - 如何在 python gpgme 中使用高级(低级)函数来删除一个键?