MVC 和异步部分

MVC and asynchronous partials

我有一个应用程序有几个 (4-7) 到外部端点的 WebService 请求。加载每个请求需要 2-5s。使用 ajax 加载请求并在页面上显示为部分视图。

问题是每个后续请求都在等待前一个请求完成后才开始。

Ajax 允许我在加载它们时显示它们而不冻结页面,但是是否有可能异步加载所有请求?是否可以同时加载所有分部视图?

已解决。 我现在在应用程序启动时启动所有服务,并将它们存储在静态 class:

public static class Settings
{
    public static Dictionary<string, Task<Room>> informationHolder = 
        new Dictionary<string, Task<Room>>();
}
public ActionResult Index(){
    foreach (var room in roomList)
    {
        int index = roomList.IndexOf(room);
        Settings.informationHolder.Add(
            roomList[index].Email, 
            System.Threading.Tasks.Task.Run(() => loadRoomData(roomList[index].Email)));
        }
    }

在此之后,我只是在我的局部视图中等待任务完成:

public async Task<ActionResult> _RoomMeetings(string roomEmail)
{
    var room = 
        await Settings.informationHolder.FirstOrDefault(m => m.Key == roomEmail).Value;
} 

仍然可能出现瓶颈,但应用程序加载速度提高了 2 倍。