обратный вызов — непонимание функций более высокого порядка (пример проблемы с использованием JavaScript)

Непонимание функций высшего порядка (пример проблемы с использованием JavaScript)

Это технически невозможно. x находится вне мира в predicate . Вы не сможете извлечь его из этой функции.

Кроме того, как вы правильно предполагаете в своем коде, нам логически необходимо сообщать x как predicate и callback . Иначе какой смысл вообще?

С тех пор ваше решение является одним из очень немногих возможных.

Вы можете «украсить» это лучше с карри. Идея точно такая же, как в вашем коде, но если вы это сделаете, вы сможете вызывать конечную функцию точно с 2 аргументами.

 const setMaybeBase ={amp}gt; x ={amp}gt; (predicate, callback) ={amp}gt; predicate(x) ? callback(x) : x; // use it later this way const maybe42 = setMaybeBase(42); maybe42(yourFn, yourFnTwo); 

Это огромное излишество, если аргумент, который вы передаете setMaybeBase является, например, сложным объектом, с которым вы собираетесь работать.


В качестве альтернативы, вы можете сойти с ума и использовать функцию, чтобы получить x .

Тем не менее, всегда помните, что самое простое решение — лучшее.

Вот реальный пример возможной функции, взятой прямо из репозитория node.js :

 function maybeCallback(cb) { if (typeof cb === 'function') return cb; throw new ERR_INVALID_CALLBACK(cb); } 
Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector