我有一个需要return true;
或return false;
的函数,其中包含一个ajax调用,该调用是根据响应确定条件结果的方法。
我的问题是范围界定,我不确定如何摆脱这一困境。如果我设置为回调,则return语句位于回调函数本身中,并且不在主包装函数中执行。
应如何设置才能正确执行?我需要完全重组吗?
function() {
var response;
$.ajax({
dataType: 'jsonp',
url: 'https://apilayer.net/api/check?access_key=',
async: false,
success: function(json) {
response = json.score;
}
});
if (response == 1) {
return false;
}
};
答案 0 :(得分:1)
dataType: 'jsonp', async: false,
无法同步发出JSONP请求 ,因此async: false
被忽略。
如果您没有发出JSONP请求,那么使用async: false
仍然是一个坏主意(它所依赖的基础功能已被淘汰是有充分理由的)。
这意味着您无法做自己想做的事。
How do I return the response from an asynchronous call?的答案描述了解决此问题的策略。
答案 1 :(得分:0)
首先,不再支持'async = false',因此呼叫本质上将是异步的。 现在,您有两个选择:
如果您的条件基于ajax响应,那么理想的方法是将其放入回调函数中。 希望对您有帮助!
答案 2 :(得分:-2)
如果您使用async false
,则请求将变得同步,并且直到请求完成后,代码才会执行。这会降低浏览器的速度。
var response = $.ajax({
dataType: 'jsonp',
url: 'https://apilayer.net/api/check?access_key=',
async: false,
success: function(json) {
response = json.score;
}
});