You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.0 KiB
62 lines
1.0 KiB
/* eslint id-length: 0, no-shadow: 0, no-unused-vars: 0 */ |
|
|
|
"use strict"; |
|
|
|
module.exports = function (t, a, d) { |
|
var value = [], obj = {}, memoized, count = 0, x, y, z; |
|
memoized = t( |
|
function (arg, x, y) { |
|
a(arg, obj); |
|
return x + y; |
|
}, |
|
{ |
|
refCounter: true, |
|
dispose: function (val) { |
|
value.push(val); |
|
} |
|
} |
|
); |
|
|
|
a(memoized(obj, 3, 7), 10); |
|
a(memoized(obj, 5, 8), 13); |
|
a(memoized(obj, 12, 4), 16); |
|
a.deep(value, [], "Pre"); |
|
a(memoized(obj, 5, 8), 13); |
|
memoized.deleteRef(obj, 5, 8); |
|
a.deep(value, [], "Pre"); |
|
memoized.deleteRef(obj, 5, 8); |
|
a.deep(value, [13], "#1"); |
|
value = []; |
|
memoized.deleteRef(obj, 12, 4); |
|
a.deep(value, [16], "#2"); |
|
|
|
value = []; |
|
memoized(obj, 77, 11); |
|
|
|
x = {}; |
|
y = {}; |
|
z = {}; |
|
memoized = t(function (arg) { |
|
return ++count; |
|
}); |
|
a(memoized(x), 1); |
|
a(memoized(y), 2); |
|
a(memoized(x), 1); |
|
a(memoized(z), 3); |
|
a(count, 3); |
|
|
|
count = 0; |
|
memoized = t( |
|
function (arg) { |
|
return ++count; |
|
}, |
|
{ maxAge: 1 } |
|
); |
|
|
|
memoized(obj); |
|
setTimeout(function () { |
|
memoized(obj); |
|
a(count, 2); |
|
d(); |
|
}, 100); |
|
};
|
|
|