-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwhilst.js
91 lines (77 loc) · 1.44 KB
/
whilst.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
var async = require('async'),
log = require('./helper').log;
/**
* async.whilst(test,fn,callback)
*
* 相当于while语法,当第一个函数为真时,循环调用异步函数fn,完成后或出错时调用回调函数
*
*/
var count = 0;
async.whilst(
function(){
return count < 3;
},
function(callback){
count++;
log(count);
setTimeout(function(){
callback(null,count);
},1000);
},
function(err,res){
if(err){
log('Error',err);
}
log('res: ' + res);
}
);
// 1
// 2
// 3
// res: 3
/**
*
* async.doWhilst(fn,test,callback)
* 先执行一次循环,再做判断
*
*/
var num = 0;
async.doWhilst(
function(callback){
num++;
log(num);
setTimeout(function(){
callback(null,num);
},1000);
},
function(){
return num < 3;
},
function(err,res){
if(err){
log('Error:',err);
}
console.log('result: ' + res);
}
);
// 1
// 2
// 3
// result: 3
/**
* async.during(test,fn,callback)
* async.doDuring(fn,test,callback)
*
* 判断循环的函数是异步的,其他与async.whilst()相同
*/
async.during(
function(callback){
callback(null,count < 3);
},function(callback){
count++;
setTimeout(function(){
callback(null,count);
},1000);
},function(err){
}
);