Переосмысленный подход к модулю hooks, предназначенный для обеспечения дополнительной гибкости, позволяя вам выполнять хуки всякий раз, когда это необходимо, а не просто обертывать одну функцию.
Этот пакет интенсивно используется внутри мангуста.
Этот модуль npm предлагает кое-что аккуратное из коробки:
Выполняется без указания хуков
hooks.execPre('cook', null, function() { done(); });
Он запускает базовые последовательные прехуки
Функции предварительной обработки принимают один параметр, функцию «готово», которую вы выполняете, когда ваша предварительная ловушка завершена.
var count = 0; hooks.pre('cook', function(done) { ++count; done(); }); hooks.execPre('cook', null, function() { assert.equal(1, count); done(); });
Он также может запускать несколько пре- и пост-хуков для одной и той же функции:
var count1 = 0; var count2 = 0; hooks.pre('cook', function() { ++count1; }); hooks.pre('cook', function() { ++count2; }); hooks.execPre('cook', null, function(error) { assert.equal(null, error); assert.equal(1, count1); assert.equal(1, count2); done(); });
Он правильно прикрепляет контекст к прехукам
Назван в честь лучшего бомбардира НБА Карима Абдул-Джаббара, известного своим мастерством броска с крючка.