Quel est le point de le faire (les) de rappel?

Dans Mochajs, ils utilisent des "done()" pour tester le code asynchrone, comme suit:

describe('User', function() {
  describe('#save()', function() {
    it('should save without error', function(done) {
      var user = new User('Luna');
      user.save(function(err) {
        if (err) throw err;
        done();
      });
    });
  });
});

Qu'est-ce que cela signifie exactement? J'ai fait de la console.journal(le fait.toString()) et j'ai obtenu ceci:

function (err) {
  if (err instanceof Error || toString.call(err) === '[object Error]') {
    return done(err);
  }
  if (err) {
    if (Object.prototype.toString.call(err) === '[object Object]') {
      return done(new Error('done() invoked with non-Error: '
        + JSON.stringify(err)));
    }
    return done(new Error('done() invoked with non-Error: ' + err));
  }
  done();
}

Est le fait de() à la fin ici différente de la() dans le premier morceau de code?

Dans la première partie de code done() se réfère à la done paramètre. Dans la deuxième partie du code done() se réfère à la définition de la done() trouve dans le champ d'application actuel.
Le framework de test doit savoir à quel moment l'opération asynchrone est terminée, il peut vérifier que le test réussi. De sorte qu'il vous donne un done() fonction de ce que vous appelez de le faire savoir.

OriginalL'auteur PraneethVT | 2016-06-05