-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprocessControl.js
More file actions
44 lines (37 loc) · 1.08 KB
/
processControl.js
File metadata and controls
44 lines (37 loc) · 1.08 KB
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
/**
* 异步操作的流程控制
*如果有多个异步操作,就存在一个流程控制的问题:
*如何确定异步操作执行的顺序,以及如何保证遵守这种顺序。
* @param {*} arg
* @param {*} callback
*/
// function async(arg, callback) {
// console.log("参数为:" + arg + ",1秒后返回结果")
// setTimeout(function () {
// callback(arg * 2);
// }, 1000);
// };
/**
* 上面代码的async 函数是一个异步任务,非常耗时,每次执行需要1秒才能完成,
* 然后再调用回调函数。
*/
var items = [1, 2, 3, 4, 5, 6];
var results = [];
function async(arg, callback) {
console.log('参数为 ' + arg + ' , 1秒后返回结果');
setTimeout(function () { callback(arg * 2); }, 1000);
}
function final(value) {
console.log('完成: ', value);
}
function series(item) {
if (item) {
async(item, function (result) {
results.push(result);
return series(items.shift());
});
} else {
return final(results[results.length - 1]);
}
}
series(items.shift());