Javascript函数接受可观察值或直值作为输入潜在陷阱

时间:2019-03-03 12:25:31

标签: javascript angular

在Angular中,似乎许多操作可以接收一个直值或对该值的可观察值。我想实现一个功能相同的函数。仅仅实施检查和转换是否有陷阱:<IMG SRC="https://images.img.com/room_pics/zim_238842_006.jpg" width="640" height="480" BORDER=0>

似乎“超载”的popular approach是要添加一个选项对象,用户可以通过它指定输入的类型。我见过的另一种方法是只接受带有可选参数的对象:

if(typeof input.subscribe != 'function') input = of(input)

当然,我可以将其分解为一个普通函数和一个异步函数,或者要求调用者提供一个可观察的函数。但是,我喜欢我的方法-我只想知道我是否没有遇到任何陷阱。

1 个答案:

答案 0 :(得分:0)

我认为这是一种反模式,除非有充分的理由,否则最好不要将可观察值作为输入。相反,我将函数调用更改为input$.pipe(switchmap(input=> x(input)))。这样,异步输入将保留在调用类中。