Em vez de ter duas chamadas aninhadas (assíncronas) para garantir que uma carregue para executar a outra, você pode usar deffereds. Verifique jQuery.when (deferreds). Consulte as chamadas com $ .when e use um “.then” encadeado que acontece quando essas chamadas são resolvidas ou rejeitadas. Parece muito humano legível para mim.
// Nested calls
function doSomething(){
$.getJSON('/api/users', function(data) {
var Users = data.users;
$.getJSON('/api/skills', function(data) {
// doSomethingElse( Users, data.skills ); // do callback
});
});
}
// Cleaner
function doSomething(){
$.when( $.getJSON('/api/users'), $.getJSON('api/skills') ).then(function( users, skills ){
// doSomethingElse( users, skills ); // both resolved here
});
}