【问题标题】:Does it make sense to call record.whenReady after record.set?在record.set之后调用record.whenReady有意义吗?
【发布时间】:2016-03-17 12:09:25
【问题描述】:

record.set 是同步的还是异步的?如果我想确保在文档完全更新时执行我在 record.set 之后放置的代码,我应该用 record.whenReady(function() {...}) 包装我的代码吗?

考虑一下代码如下:

 var record = ds.record.getRecord(`table/${id}`);
 record.whenReady(function () {
   record.set('field', 'value');
   // do I need whenReady here?
   // code that should be executed when document is updated
 })

【问题讨论】:

    标签: deepstream.io


    【解决方案1】:

    record.set 是同步的,因为一旦您调用它,它将存储值并触发您在应用程序中拥有的相关本地侦听器。

    var record = ds.record.getRecord(`table/${id}`);
    
    record.subscribe( 'field', function( data ) {
        //do something
    } );
    
    record.whenReady(function () {
            record.set('field', 'value'); // this will trigger the subscribe callback
            record.get( 'field' )  // now returns 'value'
    })
    

    whenReady 应该用来保证记录的当前数据在尝试读/写之前已经加载。如果是第一次请求记录,它将等待服务器响应记录内容,否则将使用客户端中存储的缓存记录状态。

    总之,在致电.set 之后,您可以确信您的文档已经更新!

    【讨论】:

      猜你喜欢
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多