$ .ajaxSetup({异步:假});停止mousemove事件

时间:2012-01-19 15:52:24

标签: jquery

此代码停止mousemove事件

$.ajaxSetup({async:false});
$.get(url).success(function(data) { result = data; });

有没有办法避免这种情况,但保留$ .ajaxSetup({async:false});,就像加载函数一样?

由于

加法:

如果我需要

$.ajaxSetup({async:false});
$.get(url).success(function(data) { result = data; });
$.ajaxSetup({async:true});
return result

如何处理?

由于

3 个答案:

答案 0 :(得分:6)

return意味着同步代码流。但是,AJAX是异步的,没有async: false。这并不意味着您应该使用async: false。相反,您应该更改代码流以使用回调而不是返回值。

这是必需的,因为无法使异步代码同步(即,您不能将return与异步函数一起使用)。唯一的方法是自己提供回调:

function get(url, callback) {
    $.get(url).success(function(data) { callback(data); });
}

像:

get("...", function(result) {
    // use `result` which you normally got by assigning the return value
    // of `get` to a variable
});

答案 1 :(得分:5)

你应该找到一种方法来做你想做的事情而不设置async:false

使用ajax请求中的回调,您应该可以完成大部分工作。

答案 2 :(得分:3)

async:false暂停浏览器和所有JavaScript,直到AJAX调用完成。没有办法解决这个问题。

您应该做的是,不应该尝试从AJAX调用中返回值,而应该对回调中的数据进行所有处理。

您可以将返回的数据保存到全局变量中,但在完成之前它将无法使用。