【发布时间】:2014-10-23 02:45:10
【问题描述】:
如果我有类似的东西:
var result;
var searchFunction = function(query) {
$.ajax({
url: '..',
type: 'GET',
data: {
'query': query
},
success: function(result) {
r = result
}
});
};
r 总是会成为最后一次searchFunction(query) 调用的结果吗?
例如,假设我这样做:
searchFunction('query1'); // this one takes 3 seconds to return because of internet delay
searchFunction('query2'); // this one takes 1 seconds to return because of less internet delay
我的r 会是'result1' 还是'result2'?
由于它应该是异步 (AJAX),我希望 r = 'result1',但从我所做的一些测试中,我得到了 r = 'result2'。
到底发生了什么?
【问题讨论】:
-
一种方法是在发送新请求之前中止先前的请求...
-
其实我想我知道如何解决这种并发问题,我只是想知道在这个特定的 web 案例中到底发生了什么。
标签: javascript jquery ajax asynchronous