使用异步方法(例如auth检索)时构建代码的最佳方法?

时间:2017-03-03 02:35:42

标签: android asynchronous firebase callback firebase-authentication

我正在使用Andriod应用。我从高层的角度审视了我的工作,似乎有一个非常高的分支因素可能会发生[auth-based]崩溃,这可能是因为使用Firebase授权是异步的。

我尝试解决此问题(简单地说)是将我的所有代码放入Firebase auth结果的回调中(但后来我遇到了与Google API客户端相关的竞争条件问题[我使用位置]连接回调,以及其他小问题)。

在尽我所能使其尽可能无懈可击之后,我对我的代码在我的项目中的布局方式有点不满意。例如。在我的MainActivity的{{1}}方法中,我希望我可以将所有内容线性地放在一起以便一个接一个地执行(但我知道UX缺点是没有异步完成任务)。

鉴于此,我想知道是否有人知道有任何更好的方法来做到这一点或最佳做法。最好的解决方案是将所有代码放入它所依赖的方法的回调中吗?或者我有什么遗失的东西?

由于

1 个答案:

答案 0 :(得分:0)

是的,你的结构本质上是异步的。为了避免竞争条件,每个条件必须相应地触发。承诺的光荣概念完美地为你完成了这项工作.Promises返回一个对象......它承诺做一些工作。这个对象有单独的回调......成功和失败。

这让我们使用异步代码...以更加同步的方式... ...一个非常好的功能是promises ...可以组合成依赖链。这只是意味着执行此操作,如果发生这种情况或者失败了。请考虑使用rxjava或者更确切地说是rxandroid,它体现了observable的概念。可以使用Observable来模拟事件,异步请求和动画。

Observables也可以被转换,组合和消费。 是将所有代码放入它所依赖的方法的回调中的最佳解决方案?就像你所说的那样,你应该将任务分成单个依赖,而不是一个单一的大回调。