Duvida sobre carregamento Síncrono/Assíncrono
Ola, alguém saberia me explicar melhor qual é a diferença entre o Carregamento Encadeado utilizando Funções(famoza pirâmide do capeta) e o Carregamento Encadeado utilizando Objetos(new Promises)? segundo developer.mozila.org os dois são considerados assincronos pelo que entendi, mas quando as coloquei a prova os resultados foram diferentes.
Pelo que compreendo até o momento, carregamentos só se tornam Assíncronos quando a execução entra em espera por necessitar da resolução de outras operações externas. Se a execução principal do sistema é Síncrono, ambos os métodos serão Síncronos até que alguma de suas tarefas entre em espera por aguardar retorno externo, oque na verdade não aconteceu na prática.
Exemplo utilizado:
//Carregamento Assíncrono Encadeado Derivado de Funções
var doSomething = (resolve) => resolve(2);
var doSomethingElse = (result,foo) => foo(result*2);
var doThirdThing = (result,foo) => foo(result*2);
var failureCallback = (erro) => console.log(erro);
doSomething(function(result) {
doSomethingElse(result, function(newResult) {
doThirdThing(newResult, function(finalResult) {
console.log('Got the final result: ' + finalResult);
}, failureCallback);
}, failureCallback);
}, failureCallback);
console.log('fui mais rapido?');
// Return:
// 'Got the final result: 8'
// 'fui mais rápido?'
//Carregamento Assíncrono Encadeado Derivado de Objeto (new Promise())
var doSomething = new Promise( (resolve) => resolve(2) );
var doSomethingElse = (result) => result*2;
var doThirdThing = (result) => result*2;
var failureCallback = () => console.log('desnecessário mas casso ocorrer me chame :)');
doSomething.then(function(result) {
return doSomethingElse(result);
})
.then(function(newResult) {
return doThirdThing(newResult);
})
.then(function(finalResult) {
console.log('Got the final result: ' + finalResult);
})
.catch(failureCallback);
console.log('fui mais rapido');
// Return:
// 'fui mais rápido?'
// 'Got the final result: 8'Discussão (1)
Carregando comentários...