JavaScript Continuation (synchrone et asynchrone)


Exemple

Les rappels peuvent être utilisés pour fournir du code à exécuter après la fin d'une méthode:

/**
 * @arg {Function} then continuation callback
 */
function doSomething(then) {
  console.log('Doing something');
  then();
}

// Do something, then execute callback to log 'done'
doSomething(function () {
  console.log('Done');
});

console.log('Doing something else');

// Outputs:
//   "Doing something"
//   "Done"
//   "Doing something else"

La méthode doSomething() ci-dessus s'exécute de manière synchrone avec les blocs callback-execution jusqu'à doSomething() que doSomething() renvoyé, garantissant que le rappel est exécuté avant que l'interpréteur ne se déplace.

Les rappels peuvent également être utilisés pour exécuter du code de manière asynchrone:

doSomethingAsync(then) {
  setTimeout(then, 1000);
  console.log('Doing something asynchronously');
}

doSomethingAsync(function() {
  console.log('Done');
});

console.log('Doing something else');

// Outputs:
//   "Doing something asynchronously"
//   "Doing something else"
//   "Done"

Les rappels then sont considérés comme des continuations des méthodes doSomething() . L' appel de rappel comme dernière instruction d'une fonction est appelé un appel de queue , optimisé par les interprètes ES2015 .