领域:初始同步后的通知
Realm: Notification after initial sync
根据 the docs Realm 可以在某些操作发生时通知您,例如 "every time a write transaction is committed"。我正在使用 Realm 对象服务器,当用户第一次打开我的应用程序时,大量数据会从服务器同步到应用程序。在 Realm 完成其初始同步之前,我想显示一个加载屏幕并且不显示我的应用程序的主要 UI。有没有办法通知/确定此过程何时完成?
realm.io 网站刚刚发布 documentation 如何执行此操作。
异步打开领域
如果打开 Realm 可能需要耗时的操作,例如应用迁移或下载同步 Realm 的远程内容,您应该使用 openAsync API 来执行获取 Realm 所需的所有工作在分派到给定队列之前在后台线程上达到可用状态。您还应该将 openAsync 与设置为只读的领域一起使用。
例如:
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,直到它具有所有可用的远程数据。在这种情况下,请使用 openAsync。当与同步领域一起使用时,这将在调用回调之前下载领域的所有内容。
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;
});
根据 the docs Realm 可以在某些操作发生时通知您,例如 "every time a write transaction is committed"。我正在使用 Realm 对象服务器,当用户第一次打开我的应用程序时,大量数据会从服务器同步到应用程序。在 Realm 完成其初始同步之前,我想显示一个加载屏幕并且不显示我的应用程序的主要 UI。有没有办法通知/确定此过程何时完成?
realm.io 网站刚刚发布 documentation 如何执行此操作。
异步打开领域
如果打开 Realm 可能需要耗时的操作,例如应用迁移或下载同步 Realm 的远程内容,您应该使用 openAsync API 来执行获取 Realm 所需的所有工作在分派到给定队列之前在后台线程上达到可用状态。您还应该将 openAsync 与设置为只读的领域一起使用。
例如:
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,直到它具有所有可用的远程数据。在这种情况下,请使用 openAsync。当与同步领域一起使用时,这将在调用回调之前下载领域的所有内容。
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;
});