IBM Worklight - 6.1如何在进行第二次适配器调用时停止第一次适配器调用

时间:2014-02-13 11:26:11

标签: ibm-mobilefirst worklight-adapters

如果我们以2-3秒的间隙发起多个适配器呼叫,那么如何停止在后台运行的第一个呼叫

让我们说: 我打电话给A-Adapter,它在成功后提供了一些数据,但同时如果我调用B-Adapter并在毫秒内提供一些小数据,则间隔为2-3秒。

但仍然是第一个适配器调用需要时间并在4秒后回复或假设超时。现在,A-Adapter成功后B-Adapter成功了。

现在我怀疑是

我们可以在需要时在某个时间点停止或取消订阅第一个适配器呼叫吗?

这样做有什么办法吗?

我们现在面临的问题是主要问题,如下所示。

让我们说:

我正在调用登录适配器,它会使登录成功或失败,并且需要一些时间,比如5分钟。所以我做了什么我关闭应用程序并再次启动应用程序。 我再次点击登录,我成功登录,现在我在应用程序内部并做了一些工作。现在,在这个时间点,我得到登录适配器的失败响应,这需要时间。

1 个答案:

答案 0 :(得分:0)

您的直接问题的答案是,不,没有API可以让您终止正在进行的适配器过程调用,在它自己完成之前。调用适配器过程后,它必须成功,失败或超时。

如果您讨论B适配器后A适配器完成的可能性,我无法判断您是否只是想将其作为对可能发生的情况的观察,或者您认为它是一个问题或错误 - 如果是后者,您应该理解,由于适配器过程调用是完全异步的,因此不能保证适配器过程将按照它们被调用的顺序完成,并且不打算进行任何此类保证。

为了处理你所描述的问题,我建议使用invocationContext来确保当你的成功或失败回调触发时,这对应于你期望响应的适配器过程调用for,如果没有,则忽略结果。有关详细信息,请参阅描述the options Object的Worklight信息中心部分。

如果适配器过程的通常“正常”响应时间很短,您还可以尝试通过将过程调用超时设置为少量时间来缓解此问题。因此,例如,如果适配器过程通常在大约4秒内完成,可能将超时设置为15秒 - 假设,如果适配器过程在该时间段之后尚未完成,则出现问题(可能是后端)系统你正在检索数据已挂起或崩溃,或类似的东西),它最终会失败,所以只是让它返回超时失败并放弃。这样,您不必担心在几分钟后最终失败时会发生什么......过去曾询问过another StackOverflow question,其中说明了如何更改此超时。