Commit 8cd7c88b209a2811af3674d0483a03c651d5d51b
add transaction to dict and set
Matt McKegg committed on 6/20/2017, 4:03:27 PMParent: 6e2b0b0942ba7f0b2a60ecbf703bb39a910e60ed
Files changed
dict.js | changed |
set.js | changed |
test/transaction.js | added |
dict.js | ||
---|---|---|
@@ -60,8 +60,12 @@ | ||
60 | 60 … | delete object[key] |
61 | 61 … | binder.broadcast() |
62 | 62 … | } |
63 | 63 … | |
64 … | + observable.transaction = function (cb) { | |
65 … | + binder.transaction(observable, cb) | |
66 … | + } | |
67 … | + | |
64 | 68 … | observable.set = function (values) { |
65 | 69 … | if (fixedIndexing) { |
66 | 70 … | var keys = [] |
67 | 71 … |
set.js | ||
---|---|---|
@@ -10,8 +10,9 @@ | ||
10 | 10 … | observable.delete = instance.delete.bind(instance) |
11 | 11 … | observable.has = instance.has.bind(instance) |
12 | 12 … | observable.set = instance.set.bind(instance) |
13 | 13 … | observable.get = instance.get.bind(instance) |
14 … | + observable.transaction = instance.transaction.bind(instance) | |
14 | 15 … | observable.getLength = instance.getLength.bind(instance) |
15 | 16 … | return observable |
16 | 17 … | } |
17 | 18 … | |
@@ -114,8 +115,12 @@ | ||
114 | 115 … | ProtoSet.prototype._bind = function (valueOrObs) { |
115 | 116 … | return typeof valueOrObs === 'function' ? valueOrObs(this.binder.onUpdate) : null |
116 | 117 … | } |
117 | 118 … | |
119 … | +ProtoSet.prototype.transaction = function (fn) { | |
120 … | + this.binder.transaction(this, fn) | |
121 … | +} | |
122 … | + | |
118 | 123 … | ProtoSet.prototype._listen = function () { |
119 | 124 … | var self = this |
120 | 125 … | self.sources.forEach(function (obs, i) { |
121 | 126 … | self.releases[i] = self._bind(obs) |
test/transaction.js | ||
---|---|---|
@@ -1,0 +1,49 @@ | ||
1 … | +var test = require('tape') | |
2 … | +var MutantArray = require('../array') | |
3 … | +var MutantDict = require('../dict') | |
4 … | +var MutantSet = require('../set') | |
5 … | + | |
6 … | +test(`array - transaction`, t => { | |
7 … | + var array = MutantArray() | |
8 … | + var changes = [] | |
9 … | + array(x => changes.push(x)) | |
10 … | + | |
11 … | + array.transaction(() => { | |
12 … | + array.push(1) | |
13 … | + array.push(2) | |
14 … | + array.push(3) | |
15 … | + }) | |
16 … | + | |
17 … | + t.deepEqual(changes, [[1, 2, 3]]) | |
18 … | + t.end() | |
19 … | +}) | |
20 … | + | |
21 … | +test(`dict - transaction`, t => { | |
22 … | + var dict = MutantDict() | |
23 … | + var changes = [] | |
24 … | + dict(x => changes.push(x)) | |
25 … | + | |
26 … | + dict.transaction(() => { | |
27 … | + dict.put('a', 1) | |
28 … | + dict.put('b', 2) | |
29 … | + dict.put('c', 3) | |
30 … | + }) | |
31 … | + | |
32 … | + t.deepEqual(changes, [{a: 1, b: 2, c: 3}]) | |
33 … | + t.end() | |
34 … | +}) | |
35 … | + | |
36 … | +test(`set - transaction`, t => { | |
37 … | + var set = MutantSet() | |
38 … | + var changes = [] | |
39 … | + set(x => changes.push(x)) | |
40 … | + | |
41 … | + set.transaction(() => { | |
42 … | + set.add(1) | |
43 … | + set.add(2) | |
44 … | + set.add(3) | |
45 … | + }) | |
46 … | + | |
47 … | + t.deepEqual(changes, [[1, 2, 3]]) | |
48 … | + t.end() | |
49 … | +}) |
Built with git-ssb-web