В вашем собственном коде вы никогда бы этого не сделали: как только вы используете обещания, вы не получите никакой выгоды от использования системы обратного вызова старого стиля.
Очевидно, что автор этого API хотел предложить поддержку как на основе обратных вызовов, так и на основе обещаний с помощью метода init
, чтобы клиент этого API мог все еще выбирать или поддерживать совместимость с предыдущей версией этого API, которая возможно, поддерживал только стиль обратного вызова.
Теперь метод init
принимает аргумент обратного вызова required : если он не будет передан, при выполнении callback()
возникнет исключение. Это слабое место в API, потому что теперь код конструктора (который принадлежит самому API) должен передавать аргумент обратного вызова в свой собственный вызов init
. Хотя этот конструктор не нужно «вызывать обратно», он должен предоставить действительный обратный вызов, и поэтому он передает фиктивный:
callback => {}
Несколько комментариев по этому поводу:
Это не функция, которая возвращает пустой объект. Это функция, которая выполняет пустой блок операторов.
Функция принимает аргумент, который называется callback
. Вероятно, автор подумал, что это поможет понять, что этот обратный вызов является ... обратным вызовом, но, честно говоря, меня смущает вызов параметра этой функции callback
: , isn ' Обратный вызов - это неиспользуемый параметр обратного вызова.