MVC.net。控制器方法的异步调用序列

时间:2010-09-27 11:22:06

标签: asp.net-mvc jquery

我在MVC.net应用程序上工作。我通过jQuery向我的控制器发出异步请求。下面你可以在fiddler中看到这些请求(所有这些请求都按特定顺序触发)。

num result protocol主机URL

2929 200 HTTP somesite.com:1936 / DynamicTables / SaveCurrentRowsState

2930 200 HTTP somesite.com:1936 / DynamicTables / AddRows?key = 30060d39-7531-41a2-8d40-4c53ec34d6ff& rowsCount = 5

2930 200 HTTP somesite.com:1936 / DynamicTables / GetNextPage?key = 30060d39-7531-41a2-8d40-4c53ec34d6ff& newPageNumber = 21& rowsPerPage = 30

但是服务器在另一个序列中处理这些请求(我在服务器上的每个方法的开始处放置了断点,因此为了检查这个序列)。所以,实际的顺序是: 1)AddRows 2)SaveCurrentRowsState 3)GetNextPage

似乎asp.net在面对我的断点之前花费了不同的时间来处理这些请求。 有人可以帮助我为什么有可能吗?有没有办法避免这种情况?

谢谢, 叶戈尔

2 个答案:

答案 0 :(得分:0)

使用AJAX从客户端发送请求的顺序不一定是接收它们的顺序,您不应该依赖它。一种可能的解决方案是同步发送请求,但这可能不是一个好主意,因为它会在处理它时冻结UI,这有点违背了AJAX的目的。

答案 1 :(得分:0)

如果要向服务器发送一系列异步消息,则无法保证它们将以何种顺序处理。如果您需要这种级别的控制,请将它们全部捆绑到服务器的单个调用中,或者同步调用它们。