在 record.set 之后调用 record.whenReady 有意义吗?

Does it make sense to call record.whenReady after record.set?

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

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 应该用于保证记录的当前数据在尝试 read/write 之前已经加载。如果这是第一次请求记录,它将等待服务器响应记录内容,否则它将使用存储在客户端中的缓存记录状态。

总之,致电.set后,您可以放心,您的文档已更新!