0

我们有一个 JavaScript 库,它位于 JavaScript 中的 2 个专有库(lib_Upper 和 lib_Lower)之间。我们的库将 lib_Lower 的返回值转换为 lib_Upper 期望的值/函数 - 即

lib_Upper  ->  lib_US  -> lib_Lower

lib_Lower 以异步方式运行,但不返回承诺或其他延迟对象。同样,lib_Upper 的行为就好像一切都是同步的。

因此,我们需要转换为异步来同步调用。

调用过程是这样的:

lib_Upper calls lib_US.fn()
lib_US calls lib_lower.fn2()
lib_Lower sends the request over a WebSocket and returns

在这一点上,一切都回到了 lib_Upper。

一段时间后,响应从 WebSocket 返回:

lib_Lower calls lib_US.callbackFn()
lib_US library needs to return the data from lib_lower to lib_Upper

此时我们被卡住了,因为我们已经回到了 lib_Upper。

作为 JavaScript 的新手,在回调发生之前“暂停”来自 lib_Upper 的调用看起来非常困难。

我们如何在这个链中获得一个异步事件,以便 lib_Upper 只返回回调中的数据?

谢谢。

4

1 回答 1

0

根据您对流程的描述,您应该能够在 Lib_Lower 的回调之后传递 Lib_Upper 所做的一切,如下所示:

libLower(someArgs, function(data) { libUpper.bar(translator(data)); })
于 2013-09-09T12:51:37.903 回答