Я хочу знать, как избежать пирамиды гибели этого кода:
Оригинальный код
var PlayerService = {
getPlayerTeamId: function(playerId, callback) {
$.ajax({
url: "/player/" + playerId + "/team",
success: function(team) {
callback(team.id)
}
});
},
getPlayers: function(teamId, callback) {
$.ajax({
url: "/team/" + teamId + "/player",
success: callback
});
}
};
var PlayerDetailsController = {
playerId: 8,
showTeammatesClick: function() {
PlayerService.getPlayerTeamId(this.playerId, function(teamId) {
PlayerService.getPlayers(teamId, function(playerList) {
// Render playerList
});
});
}
};
и это моя версия с async / await, чтобы избежать этой пирамиды:
Моя версия
var PlayerService = {
getPlayerTeamId: async function(playerId, callback) {
return await $.ajax({
url: "/player/" + playerId + "/team",
success: function(team) {
callback(team.id)
}
});
},
getPlayers: async function(teamId, callback) {
return await $.ajax({
url: "/team/" + teamId + "/player",
success: callback
});
}
};
var PlayerDetailsController = {
playerId: 8,
showTeammatesClick: function() {
PlayerService.getPlayerTeamId(this.playerId, function(teamId) {
PlayerService.getPlayers(teamId, function(playerList) {
// Render playerList
});
});
}
};
Это нормально? или как я могу использовать этот async / await правильно? Я пытаюсь, что "getPlayerTeamId" и "getPlayers" не должны ожидать параметр обратного вызова и избегать обратного вызова в любом случае.
любой совет? Спасибо и хорошего дня: D