0%

同步/异步新认识

//令人窒息的操作

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
var doExe = function (a, callback) {
setTimeout(function () {
console.log(a)
if (callback) {
callback()
}
}, 100 * Math.random())
};

//async
(async () => {
for (let i = 0; i < 10; i++) {
await new Promise(resolve => doExe(i, resolve));
}
})();

//不让用async
let p = new Promise(res => doExe(0,res));
for (let i = 1; i < 10; i++) {
p = p.then(() => new Promise(res => doExe(i, res)));
}

//es5
var i = 0;
var aTest = function(){
i < 10 && doExe(i++, aTest);
}
aTest();

//令人窒息的操作
for(let t = 0; t < 10; t++){
Math.random = () => t;
doExe(t);
}