每当我试图找到这个问题的答案时,每个人都会提到ajax启动/停止等。
我正在使用XUI JS's XHR函数进行跨域调用,现在我想要完全像这样
callMyXHRfunction();
callNextFunctionWhenAboveFunctionResponded();
即。除非我的xhr函数响应(成功或失败),否则我应继续前进
更新
用例:
有一个名为getAllData()的函数,这个函数将我提交给服务器的所有当前数据都获取。我需要经常调用此函数来获取最新数据并继续前进。登录时我调用此函数来获取最新数据,每10分钟后我需要调用它来刷新数据。
因此,如果我在成功函数上调用我的每个函数,那么我的代码可能会混淆其他开发人员,如果我像上面那样写,他/她将很容易知道第一行和第二行发生了什么。
希望现在每个人都能很好地了解我的情况。
答案 0 :(得分:1)
请参阅您引用的网站上的第三个示例:
x$( selector ).xhr( url, fn );
第二个参数可以是回调,回调是你可能想要开始的关键字。
或者,通过提供async: false
作为选项来使用同步呼叫。
x$("body").xhr("http://the-url",{ async: false });
控制流将暂停,直到请求返回,然后继续执行下一个功能。请参阅http://jsfiddle.net/ZQ9uw/以供参考。
答案 1 :(得分:0)
您需要以指定回调函数的方式进行.xhr
调用,并将“next”函数作为回调函数传递。
所以你会这样写:
callMyXHRFunction(nextFunctionToCall); // no parens after nextFunctionToCall!
function callMyXHRFunction(callback) {
$("something").xhr(url, {
error: callback, // so that nextFunctionToCall is called on error
callback: callback, // so that nextFunctionToCall is called on success
async: true
// add more options here
});
}