0

我曾經實現同步在web api應用程序中的操作,並異步獲取數據我在客戶端部分使用AJAX從api操作獲取數據。異步控制器呈現數據

然後我讀到async controller,我需要知道生命週期,以呈現頁面

例如:

public async Task<ActionResult> PWGasync() 
    { 
     ViewBag.SyncType = "Asynchronous"; 
     var widgetService = new WidgetService(); 
     var prodService = new ProductService(); 
     var gizmoService = new GizmoService(); 

     var widgetTask = widgetService.GetWidgetsAsync(); 
     await Task.Run(widgetTask); 

     var pwgVM = new ProdGizWidgetVM(widgetTask.Result ); 

     return View("PWG", pwgVM); 
    } 

並認爲將rendred先的數據將顯示?

+0

否。視圖將在所有任務完成後呈現,以便呈現所需的所有結果都可用。 –

+0

[ASP.NET MVC 5應用程序的生命週期](https://www.asp.net/mvc/overview/getting-started/lifecycle-of-an-aspnet-mvc-5-application) –

+0

@AndriyTolstoy什麼是異步和同步動作之間的區別呢? –

回答

1

確實視圖會首先顯示數字,然後顯示數據?

async不改變HTTP協議。還有一個請求和一個響應。

異步和同步操作之間有什麼區別?

async動作允許請求線程返回到線程池,而await操作正在進行中。這可以更好地利用線程池,從而使Web服務的可伸縮性更好。

+0

謝謝,你提到「這反過來允許Web服務更好的可伸縮性」,在這個例子中,動作將返回一個不是數據的視圖,所以我沒有看到使用異步動作的任何需要。 –

+0

@LamloumiAfif:行動返回的是無關緊要的。 'async'就是釋放線程。 –