同步AJAX调用期间更新GUI



我正在使用谷歌应用引擎运行一个web应用程序,我遇到了一点问题。我需要生成一个相当大的CSV文件,并将其发送到客户端。由于存在60秒的最大超时,并且没有文件系统可以写入,所以我决定使用SJAX(我猜是同步AJAX)从服务器获取数据块,将它们集中起来,然后将其发送回服务器,服务器将其作为CSV文件发送回客户机。很烦人。

无论如何,这需要很长时间,所以我想我应该使用一个进度条来检查收到了多少块,而不是总共有多少块。问题是,因为我使用的是jax,孤立的js线程被阻塞。setTimeout()也被阻塞。有人知道有什么方法可以解决这个问题(GUI部分,我正在试图找到一个更好的方法来单独处理文件下载)?

编辑:虽然我很欣赏Shay指出我在正确的方向来解决我的问题,我仍然好奇是否有一种方法,我猜模拟多线程期间SJAX调用。

我将回答关于CSV生成的部分,因为它是您麻烦的根本原因。

您可以使用任务队列生成数据并将其保存到blobstore或Google Cloud Storage。任务队列有10分钟的处理超时,希望有足够的时间来生成数据。

你的模式应该是:调用一个方法来开始生成数据,使用pull来检查数据是否准备好了(或者使用comet的通道),如果准备好了就下载。

最新更新