javascript异步请求会阻止用户交互

时间:2011-09-15 20:10:06

标签: javascript ajax jquery

我有一张游戏的2d地图,每次用户移动地图时,都会从服务器重新加载新数据。在加载(异步!)ajax请求时,将忽略每个用户与地图的交互。因此,如果我想移动地图并执行mousedown - > mousemove - > mouseup,这些事件只会被忽略。

我使用jQuery 1.5.11.6.4进行了尝试。

我的代码:

$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毫秒!)

提前致谢,

0 个答案:

没有答案