Так как реализовать общую функцию, которая вы можете передать некоторую функцию обратных вызовов с несколькими возможными списками параметров.
В принципе, вы этого не сделаете. Функция, получающая обратный вызов, отвечает за то, что обратный вызов получает в качестве аргументов. Когда вы вызываете Array#forEach
, это Array#forEach
, который решает, какие аргументы получает ваш обратный вызов. Аналогично, String#replace
определяет, с каким вызовом будет обращаться.
Ваша задача - сказать, что сделает test
, как он будет называть его обратный вызов. Тогда это работа человека, использующего test
, чтобы написать обратный вызов соответствующим образом. Например: вы можете документировать test
как вызов обратного вызова без аргументов. Если вызывающий абонент хочет использовать callback_b
, то это зависит от того, что callback_b
ожидает параметр. Есть несколько способов, они могут сделать это:
может обернуть его в другой функции:
test(function() {
callback_b("appropriate value here");
});
... или использовать Function#bind
test(callback_b.bind(null, "appropriate value here"));
... но это их проблема , не ваш.
Замечание: Если они передадут вам callback_b
, и вы вызываете его без каких-либо аргументов, вы не получите ошибку. JavaScript позволяет вам вызывать функцию с меньшим количеством аргументов, чем она ожидает, или больше. Как работает функция, которая зависит от автора функции.
Почему бы» t просто вызовите тест следующим образом: 'test (callback_b ('what b должен сказать'))' – malarres
@malarres Он по-прежнему будет выполните 'callback_b', если условие equls false – qslcna
@malarres: ** И ** он выполнит' callback_b' * first *, перед 'test'. –