2012-02-21 57 views
-1

我對異步調用有一個很大的誤解,我找不到合理的答案(我很抱歉,如果這是一個愚蠢的問題,但似乎我不明白這一點)網絡開發中的異步調用

有什麼辦法在Web開發中調用函數異步沒有Javascript?

當我的意思是異步時,我指的是調用一個函數,在頁面加載時以及在完成後向用戶顯示結果而不讓他等待函數處理(並顯示空白頁)。

插座是否可行?

語言:PHP,JAVA,ASP.NET,PYTHON

感謝。

+0

您可以將Java小程序或Flash或Silverlight嵌入到您的頁面中以實現類似的效果,但結果不如JS恕我直言的吸引力。 – Mchl 2012-02-21 21:06:43

+0

例如,如果我想調用一個php/java函數來完成繁重的工作,我希望能夠呈現整個頁面,並且當函數結束處理以向用戶顯示結果(以div或跨度)時,或者向用戶顯示創建的輸出(如php中的popen) – pufos 2012-02-21 21:10:01

+0

爲什麼你不能使用JS?現代異步Web開發_screams_ JS。 – nickb 2012-02-21 21:14:43

回答

1

那麼,在將數據發送到客戶端之前,服務器沒有理由等待所有動態內容可用。所以它可以發送一些數據(例如「請稍候」 - 消息),然後執行繁重的處理,然後發送響應,全部作爲對一個http請求的回覆。然而,這意味着瀏覽器會一直顯示加載欄,直到收到最終消息。

+0

是的,但沒有人想看到加載5 - 8秒 – pufos 2012-02-21 21:14:38

+0

我認爲,也許Java(小服務程序或JSP)可以操縱DOM像Javascript,因爲Java是多線程,並行並可以具有本地異步調用。 PHP是單線程,目前它不實現異步調用 – pufos 2012-02-21 21:18:54

+0

問題不在於服務器端,而在客戶端。瀏覽器不能做臺異步調用,以檢查是否有新的內容,而無需使用JavaScript或重新加載頁面(或者頁面上的框) – Simon 2012-02-21 21:23:43

1

並非沒有醜陋的20世紀黑客,例如每隔幾秒不斷重新加載頁面,直到結果可用。

+0

因此,如果沒有使用Javascript,那麼將使網絡應用程序異步無法實現? (首頁百頁 - 顯示結果,因爲它們處理) – pufos 2012-02-21 21:11:40

0

根據您發佈的問題和意見。由服務器呈現數據的方式有很多種。這完全取決於你如何構建你的應用程序。回想起來,Javascript提供了最優雅的解決方案。

一種方法是使用Meta-Refresh標籤不斷刷新頁面並在內容可用時顯示內容。

另一種方法是在網頁中添加iFrame。 iFrame的URL將是一個負責處理的頁面。這樣,頁面的加載就不會等待iFrame加載。

+0

噢噢噢,我忘了完全地約I幀,因爲我再也不會使用它們(因爲MVC框架)。但我的問題是:Java知道如何調用異步任務並在後臺執行任何操作,並在結果可用時顯示它。爲什麼需要JavaScript(僅僅是因爲涉及瀏覽器)? – pufos 2012-02-21 21:57:42

+0

你要記住,HTTP是一個無狀態的協議,當你發送一個GET請求到一個URL,你得到響應。之後,服務器無法回電並說,我有關於您的查詢的更多信息。所有這些黑客爲客戶端提供了一種方法,使其保持與服務器的連接處於打開狀態,直到相應的響應可用。 – alykhalid 2012-02-21 22:27:00

0

當使用我的Android手機時,通常會收到要求關閉我甚至不使用的程序的彈出式窗口,而Facebook則是常見的模擬程序。有幾個。我不明白它們在不使用它們時的運行方式

+0

許多應用程序在後臺運行。他們運行,以便他們可以更新信息,或檢查某些東西。這是一個非常普遍的現象。 – 2014-06-12 05:19:04