Do not emit asyncpurge on uninitialized values

Fix #9
This commit is contained in:
Mariusz Nowak
2013-10-08 15:20:23 +02:00
parent be4cfadbd4
commit ff85fb5228
2 changed files with 10 additions and 7 deletions

View File

@@ -2,11 +2,12 @@
'use strict';
var toArray = require('es5-ext/lib/Array/from')
, last = require('es5-ext/lib/Array/prototype/last')
, forEach = require('es5-ext/lib/Object/for-each')
, isCallable = require('es5-ext/lib/Object/is-callable')
, nextTick = require('next-tick')
var toArray = require('es5-ext/lib/Array/from')
, last = require('es5-ext/lib/Array/prototype/last')
, isArguments = require('es5-ext/lib/Function/is-arguments')
, forEach = require('es5-ext/lib/Object/for-each')
, isCallable = require('es5-ext/lib/Object/is-callable')
, nextTick = require('next-tick')
, isArray = Array.isArray, slice = Array.prototype.slice
, apply = Function.prototype.apply;
@@ -101,7 +102,7 @@ require('../_base').ext.async = function (ignore, conf) {
// If false, we don't have value yet, so we assume that intention is not
// to memoize this call. After value is obtained we don't cache it but
// gracefully pass to callback
if (!isArray(cache[id])) {
if (isArguments(cache[id])) {
conf.emit('purgeasync', id);
delete cache[id];
}

View File

@@ -3,6 +3,8 @@
var memoize = require('../../lib')
, nextTick = require('next-tick');
require('../../lib/ext/dispose');
module.exports = function () {
return {
"Regular": {
@@ -85,7 +87,7 @@ module.exports = function () {
return u;
};
mfn = memoize(fn, { async: true });
mfn = memoize(fn, { async: true, dispose: a.never });
a(mfn(3, 7, function (err, res) {
a.deep([err, res], [e, undefined], "Result #1");