1

私は最近、SQLトランザクションに似ているように見えるPromisesについて学びました。

  • トランザクションはすべてかゼロか

  • Promiseはシーケンシャルコールバックです

    それらは、非同期イベントを処理するための同じ概念の異なる実装ですか?

4

2 に答える 2

3

Promiseは、非同期性を扱う一般的な概念です。トランザクションは、複数のレコードを更新するときにアトミック性を保証する手段です。

それらはいくつかのライブラリに一緒に表示される場合がありますが、関連していません。非同期APIを持つトランザクションデータベースがある場合は、それらを一緒に見ることができます。

于 2012-11-29T16:44:32.870 に答える
1

意図:

promiseは、非同期コールバックを同期するための高レベルのインターフェースを提供します

トランザクションは、依存するSQLステートメントを実行するための高レベルのインターフェースを提供します

使用事例

アプリケーションが将来の価値を必要とする場合、オンデマンドでPromiseを構築し、返されるまで待機します。

データベースが一連のデータ操作を実行する必要がある場合、トランザクションが構築されます

エラー処理

promiseで例外が発生した場合、例外が返され、futureは一時停止されます

トランザクションで例外が発生した場合、保留中のトランザクションでロールバックが実行されます

突然変異

例外がない場合、計算された値はfutureオブジェクトに返されます。

例外がない場合、トランザクションの最終結果セットがコミットされます

副作用

トランザクションブロックでは、複数のデータベースにクエリを書き込むことができますが、別のデータベースにクエリを書き込む前に、トランザクションを1つのデータベースにコミットまたはロールバックする必要があります。

将来的には、1つ以上のグローバル変数または非ローカル変数に値を割り当てることができます。コミットやロールバックはありません

汚染

読み取りは、同時SQLトランザクションの実行中に発生する可能性があります。可能な読み取りアクションは次のとおりです。

  • ダーティリード。最初のSQLトランザクションがCOMMITを実行する前に、2番目のSQLトランザクションが行を読み取ります。
  • 繰り返し不可の読み取り。SQLトランザクションが行を読み取り、2番目のSQLトランザクションが行を変更または削除して、COMMITを実行します。
  • ファントム。SQLトランザクションが検索条件を満たす行を読み取ると、2番目のSQLトランザクションが最初のトランザクションの検索条件を満たす行を少なくとも1つ生成し、最初のトランザクションが検索を繰り返して、異なる結果セットが生成されます。

割り当てまたはシリアル化は、将来の実行中に警告なしに発生する可能性があります

状態管理

セーブポイントを設定すると、トランザクションの一部をロールバックできます。たとえば、トランザクションに挿入、更新、および削除が含まれていて、更新後にセーブポイントを設定した場合、トランザクションをロールバックして削除を除外できます。

未来にはセーブポイントがありません

参考文献

cftransaction
利用可能なトランザクション分離レベルの理解
Promisesを使用したJavaScriptでの非同期プログラミング
トランザクションレプリケーションのしくみ
トランザクションプロセスの同期
最適化アルゴリズム
同時実行制御アルゴリズムシリアル化可能な
分離の構成
新しいレジストリ変数による同時実行の改善
オペレーティングシステム講義ノート:割り当てとデッドロック
SQLiteファイルI/O仕様
約束の破れ–c ++ 0x futurescurrentum.futures
—並列タスクの起動
Javascriptは素晴らしい:Promiseは必要ありません
JavaScript Asynchronous Architectures:Events vs. PromisesAS3Promises-
ガイドと例
Smalltalk Concurrency、Playing With Futures
promise-streams
System.Threading.TTask.Future
Promises Part 5:Lego Problem
Callbacks vs Events
Events and Callbacks
Events vs. Callbacks –いつどの
coroutines、callbacks、message-queuesを使用するか-TclES6の
紹介Promises –コールバックを回避するために必要な4つの機能 ES6PromisesとPEP3148Futuresの違いを連鎖させる
ES6ジェネレーターに関するすべて

于 2014-08-28T22:19:28.163 に答える