2

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
 })
4

1 回答 1

2

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您可以放心,您的文档已更新!

于 2016-03-17T12:40:48.387 回答