⊗jsSpACInr 155 of 294 menu

Código assíncrono com callbacks em JavaScript

Suponha que temos uma determinada função assíncrona:

function make() { setTimeout(function() { console.log('1'); }, 3000); }

Suponha que usamos esta função da seguinte forma:

make(); console.log('2'); // será executado primeiro

Suponha que queremos fazer com que a segunda impressão no console seja executada após a operação assíncrona dentro da função ser concluída. Uma das abordagens usadas para isso é o uso de um callback: vamos envolver o código que espera em uma função anônima e passá-la como parâmetro para a função make:

make(function() { console.log('2'); });

Claro, isso por si só não resolverá nossa tarefa. Por enquanto, apenas estabelecemos a seguinte convenção: se desejar executar código após a ativação de make, passe esse código como um callback na chamada de make.

Vamos corrigir o código da função make para que ela comece a funcionar de acordo com nossa convenção:

function make(callback) { setTimeout(function() { console.log('1'); // alguma operação assíncrona, pode não ser única callback(); // então nosso callback }, 3000); }

Explique em que ordem os números serão impressos no console:

function make(callback) { setTimeout(function() { console.log('1'); callback(); }, 3000); } make(function() { console.log('2'); console.log('3'); });
ptkanlrouzl