根据the docs,Realm可以在发生某些操作时通知您,例如“每次提交写入事务时”。我正在使用Realm对象服务器,当用户第一次打开我的应用程序时,大量数据将从服务器同步到应用程序。我想显示一个加载屏幕,并且在Realm完成初始同步之前不会显示我的应用程序的主UI。有没有办法在这个过程完成时得到通知/确定?
答案 0 :(得分:1)
realm.io网站刚刚发布了关于如何执行此操作的documentation。
异步开放领域
如果打开Realm可能需要耗时的操作,例如应用迁移或下载同步Realm的远程内容,则应使用openAsync API执行将Realm置于可用状态所需的所有工作。调度到给定队列之前的后台线程。您还应该将openAsync与设置为只读的Realms一起使用。
例如:
Realm.openAsync({
schema: [PersonSchema],
schemaVersion: 42,
migration: function(oldRealm, newRealm) {
// perform migration (see "Migrations" in docs)
}
}, (error, realm) => {
if (error) {
return;
}
// do things with the realm object returned by openAsync to the callback
console.log(realm);
})
openAsync命令将配置对象作为其第一个参数,将回调作为其第二个参数;回调函数接收一个布尔错误标志和打开的Realm。
初始下载
在某些情况下,您可能不希望在拥有所有远程数据之前打开Realm。在这种情况下,请使用openAsync。当与同步Realm一起使用时,这将在调用回调之前下载所有Realm的内容。
var carRealm;
Realm.openAsync({
schema: [CarSchema],
sync: {
user: user,
url: 'realm://object-server-url:9080/~/cars'
}
}, (error, realm) => {
if (error) {
return;
}
// Realm is now downloaded and ready for use
carRealm = realm;
});