微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

行为主体淘汰赛可观察表现

如何解决行为主体淘汰赛可观察表现

我正在处理一个项目,在该项目中我有一个跨应用程序运行的单例。这个单例提供了一个视图模型可以订阅的 observable。订阅后,订阅者应该从 observable 中获取最新数据,然后继续侦听更多数据。

基本上,我正在寻找 Knockout 中的 RxJS BehaviorSubject 实现。

我是 KO 的新手。我有一个可以工作的扩展器,但我不确定我所做的是否会导致问题。

这是我的扩展器:

require(['knockout'],function(ko) {
  ko.extenders.subscribeWithLatest = function (target) {
    var _subscribe = target.subscribe;
    target.subscribe = function (callback) {
      var subscription = _subscribe.apply(this,arguments);
      var currValue = target.peek();
      if (currValue) {
        // I'm using setTimeout to stop the value from being
        // provided before the subscription is returned.
        // I'm not proud of this.
        setTimeout(() => {
          try { callback(currValue); } catch(e) {} }
        );
      }
      return subscription;
    };
    return target;
  };
});

上面的代码确实按我的意愿工作,但我不确定它的效率。

解决方法

它实际执行的操作(订阅、峰值、等待、获取价值)有点混乱。你试过像这样更简单吗?

myViewModel.personName.subscribe(function(newValue) {
   alert("The person's new name is " + newValue);
});

Knockout 并没有完全包含 RxJS 行为主题,坦率地说,它并不总是需要的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?