【问题标题】:How does Falcor Model handle references to strings?Falcor 模型如何处理对字符串的引用?
【发布时间】:2016-05-01 11:53:05
【问题描述】:

在 Javascript 中,strings are immutable,对字符串的引用相当于复制字符串 istelf。

在 Falcor 中,我可以使用 {$type:"ref", value:[...]} 来引用字符串。 Falcor 声称要保持数据一致性,因此如果模型包含引用,它们最终会指向同一个 JS 对象(因此保持一致性变得微不足道)。

来自Falcor docs on JSON Graph:
JSON Graph 允许将图建模为 JSON,而不会引入重复项。不是将一个实体多次插入同一消息,而是将每个具有唯一标识符的实体插入到 JSON Graph 对象中的一个单个全局唯一位置。

但是,我看不出这如何适用于字符串。

比方说,我有一个这样的模型:

{jsonGraph:{
    foo: {text: 'aaa'},
    bar: {text: {$type: "ref", value: ["foo", "text"]}},
}}

当我更新foo.text 时会发生什么? bar.text 也会更新吗?如果是,它是如何工作的?

【问题讨论】:

    标签: javascript reference data-consistency falcor


    【解决方案1】:

    当我更新foo.text 时会发生什么? bar.text也会更新吗?

    如果您更新foo.text,然后更新get('bar.text'),您将获得foo.text 的当前值。如果您想这样想的话,好像两个地方的值都更新了。

    但实际上没有bar.text 值,它只是一个引用,如果被引用的事物发生了变化,那么遵循该引用的事物将遇到该新值。

    这样想:

    var text = '123';
    function getText() {
      return text;
    }
    

    getText() 的行为类似于对 text 的引用。如果您设置了text = 456,那么getText() 将开始返回不同的值,即使getText() 本身没有改变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 2013-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多