В чем смысл обратного вызова done ()?
В Mochajs они используют «done ()» для проверки асинхронного кода, например так:
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();
});
});
});
});
Что это значит точно? Я сделал console.log (done.toString ()), и я получил это:
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();
}
Отличается ли done () в самом конце здесь от done () в первом фрагменте кода?