Javascript 如何判断域是否已成功更新?

Javascript 如何判断域是否已成功更新?,javascript,react-native,realm,Javascript,React Native,Realm,我对react native使用Realm数据库还不熟悉,虽然文档/api通常让事情看起来足够清楚(顺便说一句,这是非常值得赞赏的),但我在api中没有看到任何地方在我尝试修改(创建、更新、删除)时会出现这种情况域中的db表,我可以添加一种方法来跟踪成功或失败,并以实物作出响应。它是否存在,而我只是看不到它,或者除了添加回调作为参数之外,是否还有一种方法可以让我处理这个问题?域中的失败将导致抛出异常,因此您可以使用try/catch块来处理失败领域。仅当代码中存在逻辑错误时,才应抛出创建和领域。

我对react native使用Realm数据库还不熟悉,虽然文档/api通常让事情看起来足够清楚(顺便说一句,这是非常值得赞赏的),但我在api中没有看到任何地方在我尝试修改(创建、更新、删除)时会出现这种情况域中的db表,我可以添加一种方法来跟踪成功或失败,并以实物作出响应。它是否存在,而我只是看不到它,或者除了添加回调作为参数之外,是否还有一种方法可以让我处理这个问题?

域中的失败将导致抛出异常,因此您可以使用try/catch块来处理失败<代码>领域。仅当代码中存在逻辑错误时,才应抛出创建和
领域。删除
Realm.write
在尝试将数据库写入磁盘时,如果出现错误,可能会引发错误

您可以轻松创建自己的包装器,以便传入成功/错误的回调,而不必为每次写入都编写try/catch块:

function writeWithError(realm, writeCallback, errorCallback) {
    try {
        realm.write(writeCallback);
        errorCallback(undefined);
    }
    catch(e) {
        errorCallback(e);
    }
}

该示例在成功时使用
undefined
调用错误回调,或者在抛出错误时使用错误回调。您也可以尝试使用
Object.defineProperty
将其附加到
领域
对象,以便将其作为成员函数调用。

感谢您的回复。然而,我并不认为没有错误/异常被捕获是成功的好指标。另外,我最初问的问题是关于“跟踪成功或失败并以实物回应”的问题,我想我应该强调“以实物回应”你知道是否有任何方法可以包含回调函数或类似回调函数的东西吗?我用一个例子更改了我的答案,说明了如何包装写入以支持错误回调。我感谢你的回答,我只想进一步讨论这个问题,因为你似乎已经回答了许多其他领域的问题,我很抱歉认为这可能是你为Realm工作。如果我错了,请原谅我的冲动。对于额外的try/catch语句,我遇到的主要问题是它包含了“writeCallback”作为realm.write的参数,但是realm.write已经根据spec:realm.write(()=>{realm.create('Car',{make:'Honda',model:'Accord',drive:'awd'});});我不确定我是否完全理解你的问题。因为写操作是同步的,所以我们不需要回调就可以知道写操作是否成功。在运行传递给
Realm.write
的函数后,在该函数内所做的所有更改都将写入数据库,如果在任何时候发生错误,则将引发异常,并放弃在该函数内所做的所有更改。
writeCallback
中抛出的任何异常都会通过write进行传播,因此您可以使用一次try/catch捕获所有异常。