javascript – 在rx中创建资源的副作用(反应式扩展)

rx指南说尽可能避免副作用,如果不可避免的话,将它们放在do()(js中的doAction)子句中.

但是,UI中非常常见的副作用是创建一些在下游(由子窗口小部件)引用的资源(例如< div>).您必须捕获这些资源的句柄,以便可以传递它们.例如.如果你有一个数组,每个都需要一个div,你可以为每个创建一个div,并将这些div的句柄传递给子节点.

但是doAction()会丢弃副作用的返回值,因此您无法捕获创建的对象的句柄.你必须在select()中做副作用.

我看这一切都错了吗?创建的资源是状态,并且是副作用.你想要流中的状态,但是你不能把它放在流中而不将副作用放在select()中,这是禁忌的.

解决方法:

请记住,它们只是指导方针.如果你想要一个副作用选择功能,你知道它将如何使用,那么去吧.

但是……你是否考虑过创建分离元素并仅将它们附加到订阅回调中的文档中?换句话说,不是资源的创造是副作用.只有当您对资源执行某些操作时.我已经使用过这种模式了几次……

$(someElement).onAsObservable("click")
    .select(function(ev) {
            return $("<div>");
     })
     ...do stuff to detached div
     .subscribe(function($el) {
          // finally attach it
          $(container).append($el);
     });
上一篇:javascript – Angular 6:类型’typeof Observable’上不存在属性’fromEvent’


下一篇:javascript – 使用Observable进行AWS cognito回调