我在编写Sapper应用程序时遇到了问题,因此对它的一些熟悉可能会有助于回答...尽管问题也可能是波尔卡(例如express)...我不确定。这就是为什么我在这里:-)
这是我遇到的问题的简化示例,并且正在尝试理解原因。它是Sapper服务器路由的代码,该路由返回一些JSON。
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]);
}
我希望这段代码能够:
相反,它在服务器上控制台记录了“已发送响应”,但是客户端挂起了,直到while循环完成,服务器才发送响应。
我认为res.end应该在到达res.end时立即发送响应,但是它似乎可以继续进行,并且仅在“ get”功能完成后才返回响应。
那是为什么?是Sapper,Polka还是我自己对res.end的误解?