Javascript функция принимает наблюдаемое или прямое значение в качестве входных потенциальных ловушек - PullRequest
0 голосов
/ 03 марта 2019

В Angular кажется, что многие операции могут получить прямое или наблюдаемое значение для этого значения.Я хочу реализовать функцию, которая делает то же самое.Существуют ли подводные камни для простой реализации проверки и приведения: if(typeof input.subscribe != 'function') input = of(input)?

Кажется, что популярный подход к «перегрузке» состоит в добавлении объекта параметров, посредством которого пользователь может указатьтип ввода.Другой подход, который я видел, заключается в том, чтобы просто принять объект с необязательными параметрами:

function x(input){
    if (input.observable) input = input.observable;
    if (input.raw) input = input.raw
}

Конечно, я мог бы просто разбить его на обычную функцию и асинхронную функцию или потребовать, чтобы вызывающая сторона предоставила наблюдаемую.Однако мне нравится мой подход - я просто хочу знать, есть ли подводные камни, которых я не вижу.

1 Ответ

0 голосов
/ 04 марта 2019

Я решил, что это анти-паттерн, и лучше не принимать наблюдаемые в качестве входных данных, если нет веских причин для этого.Вместо этого я изменил вызов функции на input$.pipe(switchmap(input=> x(input))).Таким образом, асинхронный ввод остается в вызывающем классе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...