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