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.
|
|
/** * Simple memoize * wxs doesn't support fn.apply, so this memoize only support up to 2 args *//* eslint-disable */
function isPrimitive(value) { var type = typeof value; return ( type === 'boolean' || type === 'number' || type === 'string' || type === 'undefined' || value === null );}
// mock simple fn.call in wxsfunction call(fn, args) { if (args.length === 2) { return fn(args[0], args[1]); }
if (args.length === 1) { return fn(args[0]); }
return fn();}
function serializer(args) { if (args.length === 1 && isPrimitive(args[0])) { return args[0]; } var obj = {}; for (var i = 0; i < args.length; i++) { obj['key' + i] = args[i]; } return JSON.stringify(obj);}
function memoize(fn) { var cache = {};
return function() { var key = serializer(arguments); if (cache[key] === undefined) { cache[key] = call(fn, arguments); }
return cache[key]; };}
module.exports = memoize;
|