在長服務器進程,服務器可以逐步編寫響應, 像:AJAX - 從長服務器獲取數據調用
複製100個文件完成後,
10秒後:
歸檔文件完成,
30秒後:
完成刪除臨時文件,
和....
是否有可能完成了ajax之前獲取該流,並將其展示給用戶?
在長服務器進程,服務器可以逐步編寫響應, 像:AJAX - 從長服務器獲取數據調用
複製100個文件完成後,
10秒後:
歸檔文件完成,
30秒後:
完成刪除臨時文件,
和....
是否有可能完成了ajax之前獲取該流,並將其展示給用戶?
聽起來就像你正在尋找long polling。你也可能想閱讀關於Comet pattern。幾分鐘前,我也只是answered a question,涉及到類似的問題。
您可以使用兩個異步回調。一個用於執行保持會話變量值更新(刪除文件數)的處理(刪除文件或其他)。另一個異步回調可以在設置的超時時間內檢查此會話變量的值,然後相應地更新GUI,
即使您將超時設置爲足夠高以捕獲全部爲使用將不會得到任何反饋,直到它完成。
與多個狀態輪詢去是唯一的出路。
但取決於您的服務器運行方式,可能會有一些怪癖想到。
例如,IIS每個會話只使用一個線程,因此來自同一客戶端的兩個同時呼叫將相互處理。
如果您發佈了一些需要時間處理的ajax或iframe,如文件上傳,那麼該調用會阻止會話,並且任何狀態頁都需要無會話才能夠直接響應。