在前端(html文件)上,我有一个JS代码,它向节点服务器启动POST请求,服务器端进行一些处理,然后将响应发送回去。
处理过程最多也可能需要半个小时。但是发生的是,仅五分钟没有收到响应,它重新提交了POST请求,这不是我想要的,因为它将中断后端处理。
我的问题是,是否有可能做到这一点?如果是,怎么办?
这是我的提取代码
SELECT *
FROM (
SELECT rownum as rn,
A.*
FROM (
SELECT *
FROM X
ORDER BY ID desc
) A
)
WHERE rn BETWEEN 0 AND 1000000;
答案 0 :(得分:2)
你不能。
如果您需要在服务器上进行大量处理,则将其分解为多个部分。
有几种方法可以实现步骤6。最简单的方法是,让客户机每隔一段时间轮询服务器一次:“我的ID的数据准备好了吗?”。一种替代方法是使用Web套接字,并在准备就绪时将响应推送到客户端。如果您想等待90分钟,那么查看Web Workers和Notifications API可能也是明智的选择。
答案 1 :(得分:2)
很明显,Fetch本身并没有实现设置超时的方法。有些人开发了workarounds。
但是,我不确定这是要走的路。如果您的操作花了一个半小时而您想在每次完成后都得到结果,那么长时间保持浏览器处于打开状态且保持不变是很复杂的。如果用户关闭该选项卡然后重新打开它或刷新页面,会发生什么?它将再次拨打电话。
IMO的使用方式是使用websockets(socket.io),因此服务器可以在准备就绪时通知客户端,并且即使在此期间刷新页面也可以一起发送数据。 / p>