【问题标题】:Where observable object stored in memory in browser?可观察对象在浏览器的内存中存储在哪里?
【发布时间】:2019-01-09 07:58:07
【问题描述】:

当我们创建 observable 对象时,它是否存储在堆中?

它是围绕数据源的包装器对象,是数组对象还是单个值或事件(它将源包装到对象中并将其存储在内存中)作为内存中的资源?

(可观察对象)是否向操作系统发送信号,根据接收到的数据中断命令以执行特定操作,并在当前事件循环后将回调函数推送到执行堆栈?

///已编辑/// 可观察对象(由 Rxjs 库创建)

【问题讨论】:

  • 关于每个对象都存储在堆中。
  • “数据源”是什么意思? “事件”不是一个对象。你在说什么“可观察对象”,一些库的Observable 实例?不,它们不会向操作系统发送任何信号。
  • Observable 对象(数据源),当我们创建 observable 并订阅它时(Rxjs 库)

标签: javascript asynchronous reactive-programming observer-pattern


【解决方案1】:

Observable 与所有用户态 javascript 对象一样,存储在堆中。

在内存方面,它是源的包装器,就像您可以将对象包装在另一个对象中一样:

let object = { somekey: 'somevalue' };
let wrapper = { object: object }; // We just "wrapped" object

回答您关于时间、操作系统和可能的中断的问题:不。Observables 仍在 javascript 中,因此请使用 javascript 并发。它们不会以任何方式摆脱事件循环。

Observable 基本上是围绕事件侦听器的抽象。您可以从 document.addEventListener('scroll', () => {}) 之类的事件中进行观察。当您创建一个使用该事件作为源的 observable 时,它​​会在事件侦听器被调用时立即被调用,对于 Observables 没有特殊或神奇的时间安排。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 2013-11-16
    • 1970-01-01
    • 2012-03-07
    相关资源
    最近更新 更多