【发布时间】:2014-04-29 08:19:18
【问题描述】:
这是我想要实现解决方案的问题,我有一些数据需要写入数据库,数据来自网络,它可能“并行”到达,同样出于性能原因,代码使用异步联系。问题是我的实现中有一些错误,我想重写这段代码,以便它也使用事务和回滚,处理所有可能的错误,并且代码应该干净且易于理解。
我找不到示例代码来阅读以获得灵感或直接使用的东西,看看其他人做了什么会有很大帮助。
所以有人知道或有这样的示例代码吗?
我想我需要编写一些代码来链接这些方法:begin->execute->commit->end transaction 并在出现错误时回滚
更新
我想要找到或实现的是类似的东西
Update2 所以令人困惑的地方是,当你想插入一个数组时,你需要使用一个循环,然后使用异步执行方法,然后当它成功插入下一个元素等等,这使得它有点复杂,特别是如果我想将它抽象为将所有这部分代码放在一个地方而不是整个代码中。
function executeAssyncAsTransaction(statement:SqlStatement,responder:Responder):void{
//step 1 begin transaction
//step 2 execute
//step 3 commit
//step 4 end transaction
//step 5 handle errors and rollback
//use responders above no event listeners
}
我想我知道如何实现这一点,但我知道我有可能做错了(我目前在生产中的实现有时会在某些机器上崩溃,所以我知道很难编写 100% 无错误的代码)
我也在考虑实现一个队列,以便在需要时存储我的语句(如果数据库正忙),这样我就不会收到错误,并且必须稍后再试
【问题讨论】:
-
您使用哪种脚本语言? ActionScript 还是 JavaScript?
-
@PaulFacklam 我的语言是 AS3,但是我需要的 JS 示例也很好,因为我对复制粘贴解决方案不感兴趣,阅读好的代码是完美的。(我更新了我的帖子
-
您必须使用事件侦听器来同步(链接)您的异步操作。
-
@PaulFacklam 我也可以使用 Responders,我错了吗?
-
好的。从一开始就。您有来自某个网络(使用响应程序)的数据,并且您希望将其写入数据库。因此,您需要在 Adobe Air 中使用异步数据库操作以及像事件侦听器一样同步它们的东西。我认为您不能使用您的响应者对象来同步 Adobe Air 中的数据库操作。如果我错了,请纠正我。
标签: actionscript-3 sqlite air