Skip to content

Commit 51d9410

Browse files
committedDec 7, 2017
edit test
1 parent 12c712b commit 51d9410

9 files changed

+951
-736
lines changed
 

‎.travis.yml

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ node_js:
88
- "5"
99
- "6"
1010
- "7"
11+
- "8"
1112
before_script:
1213
- npm install -g gulp
1314
# - npm install -g istanbul

‎README.md

+5
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ queue1.addLikeArray([3,4],testfn,{'workResolve':log}) //Add multiple jobs with A
4343
queue1.addLikeProps({'a':5,'b':6,'c':7},testfn,{'workResolve':log}) //Add multiple jobs with Map,
4444
.then(log)
4545

46+
queue1.add(function(resolve,reject){
47+
resolve(8);
48+
}).then(log)
49+
4650
//queue1.start(); //queue start;
4751
queue1.go(testfn,['go']).then(log)
4852
/*
@@ -64,6 +68,7 @@ queue1.go(testfn,['go']).then(log)
6468
6
6569
7
6670
{ a: 5, b: 6, c: 7 }
71+
8
6772
go
6873
*/
6974
```

‎dist/promise-queue-plus.es6.js

+73-59
Original file line numberDiff line numberDiff line change
@@ -310,39 +310,32 @@ exports.arg2arr = function(arg,b,s){
310310
return Array.prototype.slice.call(arg,b,s);
311311
}
312312
},{}],4:[function(require,module,exports){
313-
"use strict";
314-
var epc = require("extend-promise/src/extendClass");
315313
var utils = require("./utils");
316314

317315
function use(Promise){
318316
var _Promise;
319317
setPromise(Promise);
320-
var ONERROR = function(err){
321-
try{
322-
console.error(err);
323-
}catch(e){}
324-
};
325318

326-
function setPromise(Promise){
327-
_Promise = Queue.Q = Queue.Promise = epc(Promise,{});
319+
var ONERROR = function(err){
320+
console.error(err);
328321
};
329322

330-
function maxFormat(max){
331-
var _max = (+max)>>0;
332-
if(_max > 0){
333-
return _max;
334-
}else{
335-
throw new Error('The "max" value is invalid')
336-
}
323+
/**
324+
* 运行函数,使其始终返回promise对像
325+
* @param {function} fn
326+
* @return {Promise}
327+
*/
328+
var runFn = function(fn){
329+
return utils.runFn2Promise(_Promise,fn);
337330
}
338331

339-
function toPromise(fn){
340-
try{
341-
return _Promise.resolve(fn());
342-
}catch(e){
343-
return _Promise.reject(e);
344-
}
345-
}
332+
/**
333+
* 设置内部使用的Promise
334+
* @param {Promise} Promise
335+
*/
336+
function setPromise(Promise){
337+
_Promise = Queue.Q = Queue.Promise = utils.extendPromise(Promise);
338+
};
346339

347340
/**
348341
* 队列类
@@ -351,32 +344,21 @@ function use(Promise){
351344
*/
352345
function Queue(max,options) {
353346
var self = this;
354-
// var def = {
355-
// "event_queue_begin":null //队列开始
356-
// ,"event_queue_end":null //队列完成
357-
// ,"event_queue_add":null //有执行项添加进执行单元后执行
358-
// ,"event_item_resolve":null //成功
359-
// ,"event_item_reject":null //失败
360-
// ,"event_item_finally":null //一个执行单元结束后
361-
// ,"retry":0 //执行单元出错重试次数
362-
// ,"retry_type":0 //重试模式 0/false:搁置执行(插入队列尾部重试),1/true:优先执行 (插入队列头部重试)
363-
// ,"timeout":0 //执行单元超时时间(毫秒)
364-
// }
365347

366348
var def = {
367-
"queueStart" : null //队列开始
349+
"queueStart" : null //队列开始
368350
,"queueEnd" : null //队列完成
369351
,"workAdd" : null //有执行项添加进执行单元后执行
370-
,"workResolve": null //成功
371-
,"workReject" : null //失败
372-
,"workFinally": null //一个执行单元结束后
373-
,"retry" : 0 //执行单元出错重试次数
374-
,"retryIsJump": false //重试模式 false:搁置执行(插入队列尾部重试),true:优先执行 (插入队列头部重试)
375-
,"timeout" : 0 //执行单元超时时间(毫秒)
352+
,"workResolve": null //成功
353+
,"workReject" : null //失败
354+
,"workFinally": null //一个执行单元结束后
355+
,"retry" : 0 //执行单元出错重试次数
356+
,"retryIsJump": false //重试模式 false:搁置执行(插入队列尾部重试),true:优先执行 (插入队列头部重试)
357+
,"timeout" : 0 //执行单元超时时间(毫秒)
376358
}
377359

378360
var _queue = [];
379-
var _max = maxFormat(max);
361+
var _max = utils.getPositiveInt(max);
380362
var _runCount = 0;
381363
var _isStart = false;
382364
var _isStop = 0;
@@ -395,7 +377,7 @@ function use(Promise){
395377
}
396378
this.setMax = function(max){
397379
try{
398-
_max = maxFormat(max);
380+
_max = utils.getPositiveInt(max);
399381
if(!_isStop && _runCount) self.start();
400382
}catch(e){
401383
onError.call(self,e)
@@ -493,7 +475,7 @@ function use(Promise){
493475
runEvent.call(self,'queueStart',self,self);
494476
}
495477

496-
var nextp = toPromise(function(){
478+
var nextp = runFn(function(){
497479
return unit.fn.apply((_self || null),unit.regs)
498480
}).then(issucc,iserr).then(function(){
499481
if(_queue.length>0){
@@ -547,9 +529,9 @@ function use(Promise){
547529
}
548530

549531
/**
550-
* 队列执行单类
532+
* 队列执行单元类
551533
* @param {Function} fn 运行函数
552-
* @param {Array} args 元行函数的参数,可省略
534+
* @param {Array} args 运行函数的参数,可省略
553535
* @param {Object} options 其他配置
554536
*/
555537
function QueueUnit(fn, args, options){
@@ -657,7 +639,7 @@ function use(Promise){
657639
var isArray = utils.isArray(data);
658640
var rdata = isArray ? [] : {};
659641
function fill(k){
660-
var args = each ? [].concat([data[k]],[k],[data]) : [].concat(data[k]);
642+
var args = each ? utils.toArray([data[k]],[k],[data]) : utils.toArray(data[k]);
661643
rdata[k] = [fn,args,con];
662644
}
663645
if(isArray){
@@ -758,7 +740,7 @@ function use(Promise){
758740
for(var i = 0;i<array.length;i++){
759741
+function(){
760742
var _i = i;
761-
var unitArgs = array[_i];
743+
var unitArgs = utils.toArray(array[_i]);
762744
var _p = jump ? o.unshift.apply(o,unitArgs) : o.push.apply(o,unitArgs);
763745
parrs.push(_p);
764746
}()
@@ -774,7 +756,7 @@ function use(Promise){
774756
for(var k in props){
775757
+function(){
776758
var _k = k;
777-
var unitArgs = props[_k];
759+
var unitArgs = utils.toArray(props[_k]);
778760
var _p = jump ? o.unshift.apply(o,unitArgs) : o.push.apply(o,unitArgs);
779761
parrs[_k] = _p;
780762
}()
@@ -804,22 +786,54 @@ function use(Promise){
804786
};
805787

806788
module.exports = use;
807-
},{"./utils":5,"extend-promise/src/extendClass":2}],5:[function(require,module,exports){
808-
'use strict';
789+
},{"./utils":5}],5:[function(require,module,exports){
790+
var epc = require("extend-promise/src/extendClass");
809791

810-
exports.isArray = function(obj){
811-
return Object.prototype.toString.call(obj) == "[object Array]"
792+
exports.isArray = function (obj) {
793+
return Object.prototype.toString.call(obj) == "[object Array]";
812794
}
813795

814-
exports.isFunction = function(obj){
815-
return typeof obj === "function"
796+
exports.isFunction = function (obj) {
797+
return typeof obj === "function";
816798
}
817799

818-
exports.isObject = function(obj){
800+
exports.isObject = function (obj) {
819801
return typeof obj === "object" && obj !== null
820802
}
821803

822-
exports.arg2arr = function(arg,b,s){
823-
return Array.prototype.slice.call(arg,b,s);
804+
exports.arg2arr = function (arg, b, s) {
805+
return Array.prototype.slice.call(arg, b, s);
806+
}
807+
808+
exports.toArray = function () {
809+
return Array.prototype.concat.apply([], arguments);
810+
}
811+
812+
/**
813+
* 将值修整为正整数,0与负数报错
814+
* @param {Number} max
815+
*/
816+
exports.getPositiveInt = function (max) {
817+
var _max = (+max) >> 0;
818+
if (_max >= 1) {
819+
return _max;
820+
} else {
821+
throw new Error('The "max" value is invalid')
822+
}
823+
}
824+
/**
825+
* 扩展Promise
826+
* @param {Promise} Promise
827+
*/
828+
exports.extendPromise = function (Promise) {
829+
return epc(Promise, {});
830+
}
831+
832+
exports.runFn2Promise = function (Promise,fn) {
833+
try{
834+
return Promise.resolve(fn());
835+
}catch(e){
836+
return Promise.reject(e);
837+
}
824838
}
825-
},{}]},{},[1])
839+
},{"extend-promise/src/extendClass":2}]},{},[1])

‎dist/promise-queue-plus.es6.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎dist/promise-queue-plus.js

+73-59
Original file line numberDiff line numberDiff line change
@@ -503,39 +503,32 @@ exports.arg2arr = function(arg,b,s){
503503
return Array.prototype.slice.call(arg,b,s);
504504
}
505505
},{}],6:[function(require,module,exports){
506-
"use strict";
507-
var epc = require("extend-promise/src/extendClass");
508506
var utils = require("./utils");
509507

510508
function use(Promise){
511509
var _Promise;
512510
setPromise(Promise);
513-
var ONERROR = function(err){
514-
try{
515-
console.error(err);
516-
}catch(e){}
517-
};
518511

519-
function setPromise(Promise){
520-
_Promise = Queue.Q = Queue.Promise = epc(Promise,{});
512+
var ONERROR = function(err){
513+
console.error(err);
521514
};
522515

523-
function maxFormat(max){
524-
var _max = (+max)>>0;
525-
if(_max > 0){
526-
return _max;
527-
}else{
528-
throw new Error('The "max" value is invalid')
529-
}
516+
/**
517+
* 运行函数,使其始终返回promise对像
518+
* @param {function} fn
519+
* @return {Promise}
520+
*/
521+
var runFn = function(fn){
522+
return utils.runFn2Promise(_Promise,fn);
530523
}
531524

532-
function toPromise(fn){
533-
try{
534-
return _Promise.resolve(fn());
535-
}catch(e){
536-
return _Promise.reject(e);
537-
}
538-
}
525+
/**
526+
* 设置内部使用的Promise
527+
* @param {Promise} Promise
528+
*/
529+
function setPromise(Promise){
530+
_Promise = Queue.Q = Queue.Promise = utils.extendPromise(Promise);
531+
};
539532

540533
/**
541534
* 队列类
@@ -544,32 +537,21 @@ function use(Promise){
544537
*/
545538
function Queue(max,options) {
546539
var self = this;
547-
// var def = {
548-
// "event_queue_begin":null //队列开始
549-
// ,"event_queue_end":null //队列完成
550-
// ,"event_queue_add":null //有执行项添加进执行单元后执行
551-
// ,"event_item_resolve":null //成功
552-
// ,"event_item_reject":null //失败
553-
// ,"event_item_finally":null //一个执行单元结束后
554-
// ,"retry":0 //执行单元出错重试次数
555-
// ,"retry_type":0 //重试模式 0/false:搁置执行(插入队列尾部重试),1/true:优先执行 (插入队列头部重试)
556-
// ,"timeout":0 //执行单元超时时间(毫秒)
557-
// }
558540

559541
var def = {
560-
"queueStart" : null //队列开始
542+
"queueStart" : null //队列开始
561543
,"queueEnd" : null //队列完成
562544
,"workAdd" : null //有执行项添加进执行单元后执行
563-
,"workResolve": null //成功
564-
,"workReject" : null //失败
565-
,"workFinally": null //一个执行单元结束后
566-
,"retry" : 0 //执行单元出错重试次数
567-
,"retryIsJump": false //重试模式 false:搁置执行(插入队列尾部重试),true:优先执行 (插入队列头部重试)
568-
,"timeout" : 0 //执行单元超时时间(毫秒)
545+
,"workResolve": null //成功
546+
,"workReject" : null //失败
547+
,"workFinally": null //一个执行单元结束后
548+
,"retry" : 0 //执行单元出错重试次数
549+
,"retryIsJump": false //重试模式 false:搁置执行(插入队列尾部重试),true:优先执行 (插入队列头部重试)
550+
,"timeout" : 0 //执行单元超时时间(毫秒)
569551
}
570552

571553
var _queue = [];
572-
var _max = maxFormat(max);
554+
var _max = utils.getPositiveInt(max);
573555
var _runCount = 0;
574556
var _isStart = false;
575557
var _isStop = 0;
@@ -588,7 +570,7 @@ function use(Promise){
588570
}
589571
this.setMax = function(max){
590572
try{
591-
_max = maxFormat(max);
573+
_max = utils.getPositiveInt(max);
592574
if(!_isStop && _runCount) self.start();
593575
}catch(e){
594576
onError.call(self,e)
@@ -686,7 +668,7 @@ function use(Promise){
686668
runEvent.call(self,'queueStart',self,self);
687669
}
688670

689-
var nextp = toPromise(function(){
671+
var nextp = runFn(function(){
690672
return unit.fn.apply((_self || null),unit.regs)
691673
}).then(issucc,iserr).then(function(){
692674
if(_queue.length>0){
@@ -740,9 +722,9 @@ function use(Promise){
740722
}
741723

742724
/**
743-
* 队列执行单类
725+
* 队列执行单元类
744726
* @param {Function} fn 运行函数
745-
* @param {Array} args 元行函数的参数,可省略
727+
* @param {Array} args 运行函数的参数,可省略
746728
* @param {Object} options 其他配置
747729
*/
748730
function QueueUnit(fn, args, options){
@@ -850,7 +832,7 @@ function use(Promise){
850832
var isArray = utils.isArray(data);
851833
var rdata = isArray ? [] : {};
852834
function fill(k){
853-
var args = each ? [].concat([data[k]],[k],[data]) : [].concat(data[k]);
835+
var args = each ? utils.toArray([data[k]],[k],[data]) : utils.toArray(data[k]);
854836
rdata[k] = [fn,args,con];
855837
}
856838
if(isArray){
@@ -951,7 +933,7 @@ function use(Promise){
951933
for(var i = 0;i<array.length;i++){
952934
+function(){
953935
var _i = i;
954-
var unitArgs = array[_i];
936+
var unitArgs = utils.toArray(array[_i]);
955937
var _p = jump ? o.unshift.apply(o,unitArgs) : o.push.apply(o,unitArgs);
956938
parrs.push(_p);
957939
}()
@@ -967,7 +949,7 @@ function use(Promise){
967949
for(var k in props){
968950
+function(){
969951
var _k = k;
970-
var unitArgs = props[_k];
952+
var unitArgs = utils.toArray(props[_k]);
971953
var _p = jump ? o.unshift.apply(o,unitArgs) : o.push.apply(o,unitArgs);
972954
parrs[_k] = _p;
973955
}()
@@ -997,22 +979,54 @@ function use(Promise){
997979
};
998980

999981
module.exports = use;
1000-
},{"./utils":7,"extend-promise/src/extendClass":4}],7:[function(require,module,exports){
1001-
'use strict';
982+
},{"./utils":7}],7:[function(require,module,exports){
983+
var epc = require("extend-promise/src/extendClass");
1002984

1003-
exports.isArray = function(obj){
1004-
return Object.prototype.toString.call(obj) == "[object Array]"
985+
exports.isArray = function (obj) {
986+
return Object.prototype.toString.call(obj) == "[object Array]";
1005987
}
1006988

1007-
exports.isFunction = function(obj){
1008-
return typeof obj === "function"
989+
exports.isFunction = function (obj) {
990+
return typeof obj === "function";
1009991
}
1010992

1011-
exports.isObject = function(obj){
993+
exports.isObject = function (obj) {
1012994
return typeof obj === "object" && obj !== null
1013995
}
1014996

1015-
exports.arg2arr = function(arg,b,s){
1016-
return Array.prototype.slice.call(arg,b,s);
997+
exports.arg2arr = function (arg, b, s) {
998+
return Array.prototype.slice.call(arg, b, s);
999+
}
1000+
1001+
exports.toArray = function () {
1002+
return Array.prototype.concat.apply([], arguments);
1003+
}
1004+
1005+
/**
1006+
* 将值修整为正整数,0与负数报错
1007+
* @param {Number} max
1008+
*/
1009+
exports.getPositiveInt = function (max) {
1010+
var _max = (+max) >> 0;
1011+
if (_max >= 1) {
1012+
return _max;
1013+
} else {
1014+
throw new Error('The "max" value is invalid')
1015+
}
1016+
}
1017+
/**
1018+
* 扩展Promise
1019+
* @param {Promise} Promise
1020+
*/
1021+
exports.extendPromise = function (Promise) {
1022+
return epc(Promise, {});
1023+
}
1024+
1025+
exports.runFn2Promise = function (Promise,fn) {
1026+
try{
1027+
return Promise.resolve(fn());
1028+
}catch(e){
1029+
return Promise.reject(e);
1030+
}
10171031
}
1018-
},{}]},{},[1])
1032+
},{"extend-promise/src/extendClass":4}]},{},[1])

‎dist/promise-queue-plus.min.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎src/queue.js

+19-26
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,29 @@
1-
"use strict";
2-
var epc = require("extend-promise/src/extendClass");
31
var utils = require("./utils");
42

53
function use(Promise){
64
var _Promise;
75
setPromise(Promise);
8-
var ONERROR = function(err){
9-
try{
10-
console.error(err);
11-
}catch(e){}
12-
};
136

14-
function setPromise(Promise){
15-
_Promise = Queue.Q = Queue.Promise = epc(Promise,{});
7+
var ONERROR = function(err){
8+
console.error(err);
169
};
1710

18-
function maxFormat(max){
19-
var _max = (+max)>>0;
20-
if(_max > 0){
21-
return _max;
22-
}else{
23-
throw new Error('The "max" value is invalid')
24-
}
11+
/**
12+
* 运行函数,使其始终返回promise对像
13+
* @param {function} fn
14+
* @return {Promise}
15+
*/
16+
var runFn = function(fn){
17+
return utils.runFn2Promise(_Promise,fn);
2518
}
2619

27-
function toPromise(fn){
28-
try{
29-
return _Promise.resolve(fn());
30-
}catch(e){
31-
return _Promise.reject(e);
32-
}
33-
}
20+
/**
21+
* 设置内部使用的Promise
22+
* @param {Promise} Promise
23+
*/
24+
function setPromise(Promise){
25+
_Promise = Queue.Q = Queue.Promise = utils.extendPromise(Promise);
26+
};
3427

3528
/**
3629
* 队列类
@@ -53,7 +46,7 @@ function use(Promise){
5346
}
5447

5548
var _queue = [];
56-
var _max = maxFormat(max);
49+
var _max = utils.getPositiveInt(max);
5750
var _runCount = 0;
5851
var _isStart = false;
5952
var _isStop = 0;
@@ -72,7 +65,7 @@ function use(Promise){
7265
}
7366
this.setMax = function(max){
7467
try{
75-
_max = maxFormat(max);
68+
_max = utils.getPositiveInt(max);
7669
if(!_isStop && _runCount) self.start();
7770
}catch(e){
7871
onError.call(self,e)
@@ -170,7 +163,7 @@ function use(Promise){
170163
runEvent.call(self,'queueStart',self,self);
171164
}
172165

173-
var nextp = toPromise(function(){
166+
var nextp = runFn(function(){
174167
return unit.fn.apply((_self || null),unit.regs)
175168
}).then(issucc,iserr).then(function(){
176169
if(_queue.length>0){

‎src/utils.js

+38-10
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,49 @@
1-
'use strict';
1+
var epc = require("extend-promise/src/extendClass");
22

3-
exports.isArray = function(obj){
4-
return Object.prototype.toString.call(obj) == "[object Array]"
3+
exports.isArray = function (obj) {
4+
return Object.prototype.toString.call(obj) == "[object Array]";
55
}
66

7-
exports.isFunction = function(obj){
8-
return typeof obj === "function"
7+
exports.isFunction = function (obj) {
8+
return typeof obj === "function";
99
}
1010

11-
exports.isObject = function(obj){
11+
exports.isObject = function (obj) {
1212
return typeof obj === "object" && obj !== null
1313
}
1414

15-
exports.arg2arr = function(arg,b,s){
16-
return Array.prototype.slice.call(arg,b,s);
15+
exports.arg2arr = function (arg, b, s) {
16+
return Array.prototype.slice.call(arg, b, s);
1717
}
1818

19-
exports.toArray = function(){
20-
return Array.prototype.concat.apply([],arguments);
19+
exports.toArray = function () {
20+
return Array.prototype.concat.apply([], arguments);
21+
}
22+
23+
/**
24+
* 将值修整为正整数,0与负数报错
25+
* @param {Number} max
26+
*/
27+
exports.getPositiveInt = function (max) {
28+
var _max = (+max) >> 0;
29+
if (_max >= 1) {
30+
return _max;
31+
} else {
32+
throw new Error('The "max" value is invalid')
33+
}
34+
}
35+
/**
36+
* 扩展Promise
37+
* @param {Promise} Promise
38+
*/
39+
exports.extendPromise = function (Promise) {
40+
return epc(Promise, {});
41+
}
42+
43+
exports.runFn2Promise = function (Promise,fn) {
44+
try{
45+
return Promise.resolve(fn());
46+
}catch(e){
47+
return Promise.reject(e);
48+
}
2149
}

‎test/mocha_queue.js

+740-580
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)
Please sign in to comment.