使ajax调用依赖于另一个ajax调用



我希望避免在彼此的"成功"事件中嵌套一堆ajax调用。我想知道是否有人能引导我朝着正确的方向做这样的事情?其中一个ajax调用依赖于另一个的返回值?

getLoginAccess((函数将以类似的方式在许多其他方法中使用。

如果第一个失败,我只想让它返回一个"null"值,然后在运行第二个ajax调用之前考虑这个值。下面我展示了一个我尝试做什么的psuedo示例

方法getLoginAccess返回第二个方法createItem执行所需的数据字典。因此,只有getLoginAccess返回有效数据,createItem才会继续调用实际的ajax调用。

谢谢

function getLoginAccess() {    
$.ajax({
url: '.../api/v1/auth/access_token',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json',
'Connection': 'keep-alive'
},
data: {
grant_type: 'client_credentials',
username: 'johnDoe',
password: '******'
},
success: function (data) {
console.log(JSON.stringify(data));
return data;
},
error: function (data) {
console.log(data);
return null;
}
})
}
function createItem() {
var login = getLoginAccess();
if (login == null) {
return false;
}
$.ajax({
url: '.../api/v1',
method: 'POST',
headers = {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded',
'access': `${login.access_token}`
};
data: {},
success: function (data) {
console.log(JSON.stringify(data));
},
error: function (data) {
console.log(data);
}
})
}
window.onload = function(){
createItem();
};

如果您想重构验证登录的部分,我们可以创建一个中间函数。。像这样的东西:

您在这里的登录功能

function getLoginAccess(){
// Return login data or null
}

在这里我们可以创建一个中间函数来处理下一次执行的依赖关系。如果登录返回的不是null,则将执行作为参数传递的函数。

function intermediateFunction(functionName,login){
if(login){
window[functionName]();
}
}

以下是您创建的其他函数。

function createItem() {
// Do something
}
function listItem() {
// Do something
}

这里不是调用createItem((函数,而是调用中间

window.onload = function(){
intermediateFunction(getLoginAccess(), "createItem");
};

因此,基本上,您总是会调用中间函数,该函数将在调用特定函数之前检查登录信息。我相信我会这样重构:(

最新更新