Android 中异步操作的顺序执行至少是复杂的。以前像 in 这样的两个运算符之间的分号顺序执行do_this(); do_that()
现在需要链接侦听器,这很丑陋且几乎不可读。
奇怪的是,证明需要链接顺序操作的示例通常看起来很做作,但今天我找到了一个完全合理的示例。
在 Android 中有应用内计费,一个应用程序可以支持多个所谓的应用内产品(也称为 SKU = 库存单位),例如让用户只购买(支付)他/她需要(而且,唉,还让大胡子男人向青少年出售位图)。
检索应用内产品信息的功能是
public void queryInventoryAsync(final boolean querySkuDetails,
final List<String> moreSkus,
final QueryInventoryFinishedListener listener)
它有一个限制,列表必须最多包含 20 个项目。(是的。) 即使这 20 种产品中只有少数被注册为应用内产品。
我想检索,比如说,关于一百个应用内产品的信息。第一个想法是循环调用此函数,但任何时候都只允许与市场进行一次异步操作。
当然有人可能会说“不要重用,更改源”,甚至为此提供非常好的论据,这可能是我最终会做的,但我写这篇文章是因为我想看到一个优雅的重用解决方案。
在一般情况下,是否有一种优雅(=不麻烦)的模式或技巧可以链接多个异步操作?
(我强调使用监听器的异步操作是预先存在的代码。)
UPD 这就是 JavaScript 世界中所谓的“回调地狱”(http://callbackhell.com/)。