首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firebase同步导致延迟

Firebase同步导致延迟
EN

Stack Overflow用户
提问于 2015-09-12 02:00:04
回答 1查看 314关注 0票数 0

我正在从事一个项目,其中我使用聚合物与Firebase的组合。我有一个旋钮元素,它只是一个旋钮,它的值存储在Firebase中。旋钮的值由聚合物观察器观察,当该值更改时,会更新firebase值。

问题如下:当值在一个地方更改时,它会更新firebase值。这将向所有其他位置发出一个更改事件。在其他地方,这会使元素中的值被设置,从而触发观察者。此观察器会导致再次设置firebase值。这反过来又会产生变化,以此类推……这会导致在调整旋钮时出现滞后行为。我能做什么?

代码语言:javascript
复制
<script>

    Polymer({
        is: 'disco-ccontrol',

        properties: {
            midiValue: {
                type: Number,
                value: 0,
                observer: '_valueChanged',
                notify: true
            },
            channel: {
                type: Number,
                value: 0
            },
            channelNumber: {
                type: Number,
                value: 0
            },
            ref: {
                type: Object,
                computed: '_computeRef(channel, channelNumber)'
            }
        },

        _computeRef: function(channel, channelNumber) {

            var ref = new Firebase("https://incandescent-inferno-8405.firebaseio.com/user/"+this.channel+'/'+this.channelNumber);
            ref.on("child_changed", function(data) {
               this.midiValue = data.val();
            }.bind(this));

            return ref;
        },

        _valueChanged: function() {
            var message = { value: this.midiValue, channel: this.channel, channelNumber: this.channelNumber };
            if (this.ref) {
                this.ref.set(message);
            } 
        }

    });

</script>
EN

回答 1

Stack Overflow用户

发布于 2015-09-13 01:12:42

如果不是这样呢

代码语言:javascript
复制
ref.on("child_changed", function(data) {

您可以使用

代码语言:javascript
复制
ref.once("child_changed", function(data) {

为了只在启动时从firebase获取值,在此之后,您只需更新firebase中的值。

当然,这取决于你的整体应用架构,但从你在这里展示的情况看,这似乎还可以。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32529499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档