在长服务器进程,服务器可以逐步编写响应, 像:AJAX - 从长服务器获取数据调用
复制100个文件完成后,
10秒后:
归档文件完成,
30秒后:
完成删除临时文件,
和....
是否有可能完成了ajax之前获取该流,并将其展示给用户?
在长服务器进程,服务器可以逐步编写响应, 像:AJAX - 从长服务器获取数据调用
复制100个文件完成后,
10秒后:
归档文件完成,
30秒后:
完成删除临时文件,
和....
是否有可能完成了ajax之前获取该流,并将其展示给用户?
听起来就像你正在寻找long polling。你也可能想阅读关于Comet pattern。几分钟前,我也只是answered a question,涉及到类似的问题。
您可以使用两个异步回调。一个用于执行保持会话变量值更新(删除文件数)的处理(删除文件或其他)。另一个异步回调可以在设置的超时时间内检查此会话变量的值,然后相应地更新GUI,
即使您将超时设置为足够高以捕获全部为使用将不会得到任何反馈,直到它完成。
与多个状态轮询去是唯一的出路。
但取决于您的服务器运行方式,可能会有一些怪癖想到。
例如,IIS每个会话只使用一个线程,因此来自同一客户端的两个同时呼叫将相互处理。
如果您发布了一些需要时间处理的ajax或iframe,如文件上传,那么该调用会阻止会话,并且任何状态页都需要无会话才能够直接响应。