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
})
答案 0 :(得分: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
后,您可以放心,您的文件已经更新!