請問大大們:
如果我呼叫了一個非同步方法,不論是用js ajax呼叫或c# Task呼叫,若呼叫完,user把網頁切換掉,或者把網頁關掉,那己經呼叫的非同步方法會依舊把內容執行完嗎?
假定這個非同步方法需要10分鐘才能把內容完全處理完,所以不卡user的操作介面,採用非同步執行
js 呼叫ajax
$.ajax({
type: 'GET',
url: '/Test/AjaxExcute', //呼叫MVC裡Controller的方法, 假定需執行10分鐘才會執行完畢
dataType: 'script'
});
C# 呼叫非同步
TaskFactory taskFactory = new TaskFactory();
taskFactory.StartNew(() => Console.WriteLine("HI");, "AsyncState1");
正常依理論來說不會停止,但還是有但書解釋的存在。
所謂的不會停止,是指發送命令端的指令。並不會去主動停止。
也不會因為換頁切頁或是關閉頁面而停止。
畢竟它只是將執行給送出去了。
但這只是這邊不會去停止。
接收端或是運行命令端。還是存在時長問題、錯誤問題、連線檢查的可能性存在。
兩種問題不能混為一談。
所以你這個問題的答案其實很難定義「對」與「不對」
因為「網頁關閉」這個動作的確不會去影響執行。
但還是有機會執行運行停止的情況發生。但其停止原因大多數來說並不會是因為網頁關閉造成的。
要看你 Server 是怎麼處理連線斷開的
一般的設計是這樣: