我最近了解了Promises,它看起来类似于 SQL Transactions。
交易全有或全无
Promise 是顺序回调
它们是处理异步事件的同一概念的不同实现吗?
我最近了解了Promises,它看起来类似于 SQL Transactions。
交易全有或全无
Promise 是顺序回调
它们是处理异步事件的同一概念的不同实现吗?
Promise 是处理异步的一般概念。事务是更新多条记录时保证原子性的一种手段。
它们可能一起出现在某个库中,但它们不相关。如果您有一个具有异步 API 的事务性数据库,您可以一起看到它们。
意图:
Promise 提供了一个用于同步异步回调的高级接口
事务提供了执行依赖 SQL 语句的高级接口
用例
当应用程序需要一个未来值时,它会按需构造 Promise 并等待它返回。
当数据库需要执行一系列数据操作时,就会构造一个事务
错误处理
如果 Promise 引发异常,则返回异常并暂停未来
如果事务引发异常,则会对挂起的事务执行回滚
突变
如果没有异常,则在未来对象中返回计算值。
如果没有异常,则提交事务的最终结果集
副作用
在事务块中,您可以将查询写入多个数据库,但您必须先将事务提交或回滚到一个数据库,然后才能将查询写入另一个数据库。
将来,您可以为一个或多个全局或非局部变量赋值;没有提交或回滚
污染
在并发 SQL 事务的执行期间可能会发生读取。可能的读取操作包括:
在未来执行期间可能会发生分配或序列化,而不会发出警告
状态管理
设置保存点可以让您回滚事务的一部分。例如,如果您的事务包括插入、更新和删除,并且您在更新后设置了保存点,则可以回滚事务以排除删除。
未来没有保存点
参考
cftransaction
了解可用的事务隔离级别
JavaScript 中的异步编程与 Promises
事务复制的工作原理
事务进程同步
乐观算法
并发控制算法
配置可序列化隔离
使用新的注册表变量提高并发性
操作系统讲义:分配和死锁
SQLite 文件 I/O 规范
破碎的承诺–C++0x futures
concurrent.futures — 启动并行任务
Javascript 很棒:我不想要承诺
JavaScript 异步架构:事件与承诺
AS3 Promises - 指南和示例
Smalltalk 并发,玩转 Future
Promise-
Streams System.Threading.TTask.Future
Promises Part 5: The Lego Problem
Callbacks vs Events
Events and Callbacks
Events vs Callbacks – when to use what
coroutines,callbacks,message-queues - Tcl
Introduction to ES6 Promises – 你需要避免回调地狱的四个函数
所有关于 ES6 生成器
链接 ES6 Promisies 和 PEP3148 期货的差异