Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript异步请求阻止用户交互_Javascript_Ajax_Jquery - Fatal编程技术网

javascript异步请求阻止用户交互

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

我有一个游戏的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.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只有一个线程,因此成功方法中的任何内容都将接管该过程。