Concept des callback en JavaScript

Le problème exposé dans ce sujet a été résolu.

salut!!

J’ai débuté depuis quelques temps la programmation en javascript. Un petit concept, les 'callback' que je n’arrive pas à comprendre me gache un peu la vie. Pouriez-vous m’éclaircir sur le sujet ? merci :)

Alors voilà :

(1): Callback avec un seul argument OK

function processUserInput(callback) {
  callback();
}

process( () => {
    console.log('Hello world!'); })

>> Hello world!

(2): Callback avec deux argument OK

function process(name, callback) {
  callback(name);
}

processUserInput('Alex', (x) => {
    console.log(`Salut${x}!`); })
>> Salut Alex!

(3): Callback avec trois argument (style NodeJS) NON

function process(name, error, callback) {
  if (!name) { error(name);}
  callback(name);
}

process('Alex', (er, x) => {
        if (er) { console.log(er); }
    console.log(`Hello ${x}!`); });
>> ERREUR!!

C’est bien le troixieme au quel je ne comprends pas. (Style expressJS app.get('/',(req,res,next)); Si vous pouviez bien me montrer où est mon erreur :)

J’ai l’impression que dans ton 3e exemple, ta fonction attend en fait non pas un mais bien deux callbacks, à savoir error et callback. Qu’on soit clair sur la définition : un callback n’est ni plus ni moins qu’une fonction. L’argument aurait pu très bien s’appeler func ou autre chose, et ça ne change rien.

Du coup, pour ton 3e exemple, tu devrais avoir un truc de ce genre ;

function process(name, error, callback) {
  if (!name) { error(name);}
  callback(name);
}

process(
    'Alex',
    (x) => { console.log('erreur'); /* ... */ },
    (x) => { console.log('ok'); /* ... */ }
);

Si ta fonction process a un problème avec name, elle appelle ainsi le callback d’erreur (appelé error), sinon elle applique le callback normal (appelé callback).

C’est plus clair ? :)

+2 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte