0
我有一个客户端的web应用程序,加载时,立即打电话给一个API端点,看看用户是否通过身份验证。如果没有,则显示登录内容。如果用户被认证,则显示其他信息。如何等待jquery请求返回响应?
我不想在返回此信息之前显示任何内容。我最初的做法是使用同步调用,这似乎是正确的。但基于对这个问题的反应似乎是错误的做法:
Synchronous JSON cross-domain?
如果是这样的话,我需要做的异步,然后暂停,直到返回的数据。
我使用淘汰赛拨打电话在激活()函数是这样的:
var activate = function() {
// get auth data
authPayload(dataservice.getAuthPayload());
if (!authPayload().isAuthenticated) {
// do stuff
} else if (authPayload().isAuthenticated === true){
// do other stuff
}
随着getAuthPayload:
var getAuthPayload = function() {
var options = {
async: false,
url: apiEndpoint + 'api/authpayload',
type: 'GET',
dataType: 'json'
};
return $.ajax(options)
.then(querySucceeded)
.fail(queryFailed);
};
目前,这是同步运行的,虽然,所以activate
功能没有看到任何响应的数据,因为它不会等待它从服务器返回。该应用程序目前显示一个微调,直到activate
函数关闭。我如何等待电话dataservice.getAuthPayload()
?
只是为了澄清这是怎么回事,阿贾克斯命令返回它有一个承诺像done(),fail()和always()接受回调函数的方法。那些提供的函数会在异步任务成功完成或失败时调用。 – Soviut