我有一个函数authenticate(),该函数使用$ post()从服务器检索会话密钥。我相信$ post是一个异步调用。每当我在脚本中执行任何操作时,我都想确保自己有一个sessionKey,如果我没有sessionKey,我想验证()。我的问题是调用authenicate()之后如何运行performTask()?
function foo() {
if (sessionKey) {
performTask();
} else {
authenciate();
performTask();
}
}
function authenticate() {
$.post(url, function(data) {
sessionKey = data.sessionKey;
});
}
编辑:我也不想放入authenticate()的回调函数performTask(),因为将从多个不同的函数调用authenticate()。
最佳答案
您可以将回调传递给authenticate方法。如果从20个不同的地方调用了authenticate,则可以传入20个不同的回调方法。
function foo() {
if (sessionKey) {
performTask();
} else {
authenciate(function() {
performTask();
});
}
}
function authenticate(callback) {
$.post(url, function(data) {
sessionKey = data.sessionKey;
if (callback) callback();
});
}