我想創建一個頁面,允許IT人員從列表中選擇一些服務器,然後單擊去執行操作。然後讓頁面上的textarea更新每個操作的狀態並完成。每個服務器維護任務可能需要一兩分鐘的時間。他們希望在每個服務器完成所選任務時在頁面上看到更新。如何隨着服務器端任務的進展多次更新網頁?
不確定在前端使用哪種技術。後端根本不是問題。我可以輕鬆地獲取服務器的完整列表,然後在每臺服務器上執行操作,然後返回完整列表以及每臺服務器的結果。但是,沒有人希望在獲取更新之前等待所有服務器完成。
通常我會使用ajax來更新頁面的一部分,但這只是一個單一的調用/響應。我想如果我使用JavaScript循環通過ajax爲每個服務器調用一個php腳本,那麼JavaScript循環會阻止UI更新,直到javascript函數完成。
任何想法?
您可以使用'EventSource'將數據傳輸到瀏覽器。請參閱http://stackoverflow.com/questions/42512572/how-to-send-xmlhttprequest-continuously-in-webworker/42513099?s=2|0.0000#42513099,http://stackoverflow.com/questions/42475492/how to-read-and-echo-file-size-of-uploaded-file-being-written-at-server-in-real?s = 5 | 0.0000 – guest271314
我認爲EventSource方法用於進行相同的調用一遍又一遍地傳遞服務器(傳遞相同的參數)以獲取更新的內容。我看到的大多數例子都是爲了獲得服務器的日期/時間。在這個用例中,IT人員會進入頁面,選擇一些服務器併發出一個請求來處理整個列表(一次)。 – Mike
您可以使用'Promise.all()'處理一組異步函數,並在所有Promise通過時都返回響應數組,或者調用或完成函數。請參閱http://stackoverflow.com/questions/42180299/how-to-use-promise-all-after-promises-created-in-for-loop/42180380#42180380 – guest271314