我正在使用gabriel 的 as3httpclient来调用 Flex 4.5 应用程序中的 RESTful JSON API。它似乎工作得很好,但现在我遇到了一个我目前不知道如何解决的问题。我使用的是 libHTTPDataListener
而不是普通的HTTPListener
.
在某一时刻,我正在发送 3 个请求,一个接一个(我们称它们为 A_GET、B_GET 和 C_GET)。对第一个请求的响应得到了适当的处理,但是以下两个请求的响应被混合在一起了:
onData(A_GET)
onDataComplete(A_GET)
onComplete(A_GET) // so far everything's fine and working as expected
onData(B_GET)
onData(C_GET)
onDataComplete(B_GET+C_GET) // <-- here be dragons!
onComplete(B_GET)
onComplete(C_GET)
问题在于,来自对 B_GET 和 C_GET 的响应的 JSON 数据以某种方式在运行之后/运行时onData()
和点击之前连接起来onDataComplete()
。这就是原因,而不是
[{ /* GET RESPONSE */ }]
我得到类似的东西
[{ /* B_GET RESPONSE */ }][{ /* C_GET RESPONSE */ }]
这显然使 Flash 的本机 JSON 解析器阻塞(导致SyntaxError: Error #1132: Invalid JSON parse input.
运行时错误),而且我也只输入onDataComplete()
一次处理程序,而不是每个请求一次,这严重干扰了我的程序流程。
谁能给我指点一下这里发生了什么以及为什么将响应合并为一个?我只是错过了一些重要的事情吗?是否有一个 [easy] 解决方法不需要我重构一半的 RESTful 程序逻辑,甚至不需要切换库来解决这个问题?