make[1]: Entering directory `/home/jifeng.zjd/git_workspace/again' Coverage

Coverage

100%
33
33
0

again.js

100%
33
33
0
LineHitsSource
1
2/**
3 * Module dependencies.
4 */
51var crypto = require('crypto');
61var __program = {};
71var __timer = {};
8
9
101function md5(str){
113 var hash = crypto.createHash('md5');
123 str += new Date().getTime();
133 return hash.update(str, 'utf-8').digest('hex');
14}
15
161function abort(key){
171 clearInterval(__program[key]);
181 delete __timer[key];
19}
201function again(func, interval, times){
213 interval = interval || 1000;
22
233 var f = function () {
243 var that = this;
253 var args = f.arguments;
263 func.apply(that, args); //执行一次
273 var key = md5(func.toString());
283 var obj = {};
293 if (times === 1) {
301 return;
31 }
322 if (times > 1) {
331 obj.times = times;
341 obj.count = 0;
35 }
362 __timer[key] = obj;
372 __program[key] = setInterval(function () {
38351 func.apply(that, args);
39351 if (__timer[key] && __timer[key].times) {
401 var obj = __timer[key];
411 obj.count++;
421 if ((obj.times - 1) <= obj.count) {
431 abort(key);
44 }
45 }
46 }, interval)
47 }
483 return f;
49}
50
511module.exports = again;
make[1]: Leaving directory `/home/jifeng.zjd/git_workspace/again'