javascript异步请求阻止用户交互
我有一个游戏的2d地图,每次用户移动地图时,都会从服务器重新加载新数据。而异步!加载ajax请求时,忽略每个用户与地图的交互。因此,如果我想移动地图并执行mousedown->mousemove->mouseup,这些事件将被忽略 我用jQuery1.5.1和1.6.4都试过了 我的代码:javascript异步请求阻止用户交互,javascript,ajax,jquery,Javascript,Ajax,Jquery,我有一个游戏的2d地图,每次用户移动地图时,都会从服务器重新加载新数据。而异步!加载ajax请求时,忽略每个用户与地图的交互。因此,如果我想移动地图并执行mousedown->mousemove->mouseup,这些事件将被忽略 我用jQuery1.5.1和1.6.4都试过了 我的代码: $map_outer.mousedown(function(e) { e.preventDefault(); engine.map.mouse_down_coords = {x: e.page
$map_outer.mousedown(function(e) {
e.preventDefault();
engine.map.mouse_down_coords = {x: e.pageX, y: e.pageY};
engine.map.mouse_is_down = true;
engine.map.mouse_down_offset = $map.offset();
}).mouseup(function(e) {
if (!engine.map.mouse_is_down) return;
$.ajax({
type: 'post',
data: {
//...
},
success: function(data) {
//....
},
dataType: 'json',
async: true
});
engine.map.mouse_is_down = false;
}).mouseleave(function() {
engine.map.mouse_is_down = false;
}).mousemove(function(e) {
e.preventDefault();
if (!engine.map.mouse_is_down) return;
//... move the map
});
为什么这会阻止浏览器长达数百毫秒?本地主机上的某些类型300毫秒
提前感谢,
levu你的成功功能有多昂贵?是否无论做什么,成功都是阻碍,而不是等待?您可以通过更改success函数来测试这一点,记录开始时间,然后记录持续时间。@jimbojw:这可能就是原因。成功函数正在修改~100个DOM元素。我也可以使它异步吗?用一个空的success函数来告诉我们这是否是问题所在。如果是这样的话,请就DOM操作的速度提出一个单独的问题。它们是这样的,但它们内部的内容完全是另一回事。异步!=多线程;javascript只有一个线程,因此成功方法中的任何内容都将接管该过程。