处理 objectify 中的异步保存错误

Handling Async save errors in objectify

我有一个对象,用于在 App Engine 上使用 Objectify 进行临时数据存储。

当我保存我的实体时,如果它抛出 ApiProxy.RequestTooLargeException 我会清除一些数据并重新保存。我想异步执行此操作,但不知道如何捕获和处理异步保存错误。

同步保存效果很好,像这样:

private void save() {
    try {
        ofy().save().entity(this).now();
    } catch (ApiProxy.RequestTooLargeException e) {
        clearOldData();
        save();
    }
}

如何使用异步保存做类似的事情?

只有在调用 now() 方法时才会出现异常。因此,保存 Result<?> 对象并在准备好时调用 now()。如果需要,请使用过滤器和本地线程;这实际上就是 Objectify 所做的。

如果您正在寻找 callback-style 异步接口,它们不存在。而且它们不会比将 Result<?> 保留到请求结束并自己完成它们更好。