javascript - 在同步 AJAX 调用期间更新 GUI

标签 javascript ajax jquery-ui google-app-engine jquery

我正在使用 Google Appengine 运行网络应用程序,但遇到了一些问题。我需要生成一个相当大的 CSV 文件并将其发送给客户端。由于最长超时时间为 60 秒,并且没有可写入的文件系统,因此我决定使用 SJAX(我猜是同步 AJAX)从服务器获取数据 block ,将它们连接起来,然后将其发送回服务器服务器将其作为 CSV 文件发送回客户端。很烦人。

无论如何,这需要很长时间,所以我想我应该使用进度条来检查已收到的 block 数和总数。问题是,由于我使用 SJAX,单独的 js 线程被阻塞。 setTimeout() 也会被阻止。任何人都知道有什么方法可以解决这个问题(GUI部分,我正在尝试找到一种更好的方法来单独处理文件下载)?

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

最佳答案

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

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

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

关于javascript - 在同步 AJAX 调用期间更新 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8700840/

相关文章:

Javascript - 添加顶部固定条并将所有其他元素向下推

javascript - 如果不希望返回任何内容,我应该在 https 可调用函数中返回什么

滚动时 jQuery ui 对话框停留在底部

css - Datepicker 在 ie7 中看起来很糟糕

javascript - 如何将添加的数据从 HTML 表保存到 SQL (PHPMYADMIN)

javascript - 如何隔离或排除 jquery Accordion 中的特定点击

javascript - 在不调整文本框大小的情况下调整 Fabric Rect 的大小

javascript - MongoDB 对象不更新

php - Ajax 检查表单上的注册电子邮件

javascript - CORS 预检响应错误