我有一个客户端 Web 应用程序,它在加载时会立即调用 api 端点以查看用户是否已通过身份验证。如果没有,则显示登录内容。如果用户通过身份验证,则显示其他信息。
在返回此信息之前,我不想显示任何内容。我最初的方法是使用同步调用,这似乎是正确的。但根据对这个问题的回答,这似乎是错误的方法:
如果是这样,那么我需要进行异步操作,然后停止直到返回数据。
我正在使用敲除在 activate() 函数中进行调用,如下所示:
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()
?