Javascript 在同步AJAX调用期间更新GUI

Javascript 在同步AJAX调用期间更新GUI,javascript,ajax,jquery-ui,google-app-engine,jquery,Javascript,Ajax,Jquery Ui,Google App Engine,Jquery,我正在使用谷歌Appengine运行一个网络应用程序,我遇到了一点问题。我需要生成一个相当大的CSV文件并发送到客户端。由于有60秒的最大超时时间,并且没有可写入的文件系统,所以我决定使用SJAX(我猜是同步AJAX)从服务器中获取数据,将其分块存储,然后将其发送回服务器,服务器将其作为CSV文件发送回客户端。很烦人 无论如何,这需要很长的时间,所以我想我应该使用一个进度条来检查收到了多少块,以及总共有多少块。问题是,因为我使用的是SJAX,所以单独的js线程被阻塞了设置超时()也会被阻止。有人

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

无论如何,这需要很长的时间,所以我想我应该使用一个进度条来检查收到了多少块,以及总共有多少块。问题是,因为我使用的是SJAX,所以单独的js线程被阻塞了<代码>设置超时()也会被阻止。有人知道解决这个问题的方法吗(GUI部分,我正试图找到一种更好的方法来单独处理文件下载)


编辑:虽然我很感激Shay为我指出了解决问题的正确方向,但我仍然很好奇是否有办法在SJAX调用期间模拟多线程。

我将回答有关CSV生成的部分,因为这是您的问题的根本原因

您可以使用任务队列生成数据,并将其保存到blobstore或Google云存储中。任务队列有10分钟的处理超时,这应该足够生成数据


您的模式应该是:调用一个方法来开始生成数据,使用pull检查数据是否准备好(或者使用comet的通道),并在准备好的情况下下载数据。

我将回答有关CSV生成的部分,因为这是您的问题的根本原因

您可以使用任务队列生成数据,并将其保存到blobstore或Google云存储中。任务队列有10分钟的处理超时,这应该足够生成数据


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

谢谢,我想我会这样做。该项目将在1小时内完成,我是在几个小时前第一次拿到它的,所以我不想开始搞我不太熟悉的事情。但我现在要调查一下:)谢谢,我想我会这样做的。该项目将在1小时内完成,我是在几个小时前第一次拿到它的,所以我不想开始搞我不太熟悉的事情。但我现在要调查一下:)嗯。。你不能在isntead上异步执行请求吗?听起来,这只是一个用延续传下去的方式改写某些习惯的问题。嗯。。你不能在isntead上异步执行请求吗?听起来,这只是一个用连续传递的方式重写某些conse的问题。