2017-04-14 47 views
0

我有一個用戶存儲在MySQL數據庫中的應用程序應用程序。當用戶退出(即關閉他們的瀏覽器窗口)時,他們需要從數據庫中刪除。我有下面的代碼在我的路線文件中的一個:Ember js在用戶關閉窗口時運行函數

setupController: function() { 
    $(window).on('beforeunload',() => { 
    this.get('currentUser').delete(); 
    }); 
    }, 

在我的測試這個似乎只從數據庫中刪除的時間可能70-80%的用戶,並以某種方式似乎是隨機的是否作品與否。我猜這是因爲有時該功能在瀏覽器關閉窗口之前沒有及時運行。我如何確保每次用戶退出時執行刪除用戶的代碼?

+0

FWIW這隻需要在Chrome中爲我工作 – ZhouW

回答

1

它不會這樣工作。原因:當用戶關閉窗口/選項卡時,瀏覽器會中斷任何請求(甚至ajax)到後端。 我建議在後端執行清理。你需要的是,當用戶執行某些操作並刪除那些在某個時間段內沒有發出任何請求的用戶時(例如,如果1小時內沒有請求,則可以確信用戶關閉了瀏覽器窗口) 。您也可以稍後在您的後端執行「平臺」請求,以免空閒用戶被刪除。

+0

我做了一個sql查詢,每5秒運行一次,並刪除我的應用程序的候補室中的用戶,其中up​​dated_at ZhouW

+0

是的,你可以將它刪除,因爲它不適合你的情況。 –