在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)
当然,我可以将其分解为一个普通函数和一个异步函数,或者要求调用者提供一个可观察的函数。但是,我喜欢我的方法-我只想知道我是否没有遇到任何陷阱。
答案 0 :(得分:0)
我认为这是一种反模式,除非有充分的理由,否则最好不要将可观察值作为输入。相反,我将函数调用更改为input$.pipe(switchmap(input=> x(input)))
。这样,异步输入将保留在调用类中。