2015-10-23 80 views
0

AJAX和Django是否可以作爲服務器讓用戶的JS發出AJAX請求,然後讓Django在很長的時間內響應用戶的請求,也就是說,當服務器有用戶的JS想要什麼?以後迴應AJAX請求

我的想法:

-AJAX requests for object 

-Django caches request 

-When object that user wants it available, Django signal tells 
    view to respond to that request with the object 

不過,我不知道如何讓JS腳本繼續做其他的事情,然後參加到服務器的響應時,它得到它,或有AJAX不計算服務器沒有響應該對象(或者根本不想)作爲錯誤。這可能沒有JS無限循環的AJAX請求,直到它得到它想要的?這可以用Django完成,只要給用戶提供對象,而不需要AJAX請求它​​們呢?

+1

默認情況下,AJAX請求是_asynchronous_,因此它將在此期間恢復其他操作。你有沒有看過使用[Promises](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise)? –

+1

我對Django並不熟悉,但是你所描述的看起來像是一個長輪詢或websocket的應用程序。在長輪詢的情況下,您可以發送請求,後端將用可定期檢查的端點響應該請求,以查看結果是否已準備好返回,並在返回時返回。使用websockets,您可以通過套接字發送請求,而後端只需在套接字中通過套接字返回結果即可。 – Taplar

+0

@ Pot-Nut正是我想要的!謝謝。 – dylan7

回答

3

我想你正在尋找處理完成後發送結果的重型後端處理作業。所以,你可以選擇任何下面提到的過程

  1. 長輪詢的 - 在這裏你可以做定期的Ajax調用,以檢查是否已處理完畢,一旦其完成後,您可以顯示結果並停止週期性阿賈克斯檢查。

  2. Web套接字 - 這是更好的方法,根據我。 django-websocket-redis是我用來實現相同的庫。該圖書館有足夠的文檔來幫助你入門。

希望這可以幫助你。 :)