es6 - 回调深渊
带着以下疑问来解答以下问题,你会学到很多
1. 回调深渊为什么会出现,为什么需要回调 ?
2. ES6为什么会出现Promise?
3. 回调的作用是什么? 跟闭包有关吗?
ES5 ~ ES6 回调深渊 -示例
1 // 回调深渊 - 实例
2 function callbackAbyss(a, b, cb) {
3 setTimeout(function () {
4 cb(a + b);
5 }, 200)
6 }
7
8 // 回调深渊 - 调用
9 callbackAbyss(1, 2, function (result) {
10 let count = 1;
11 if (result > 2) {
12 console.log('回调深渊第' + count++ + '次输出结果:', result);
13 callbackAbyss(result, 2, function (result) {
14 console.log('回调深渊第' + count++ + '次输出结果:', result);
15 if (result > 4) {
16 callbackAbyss(result, 2, function (result) {
17 console.log('回调深渊第' + count + '次输出结果:', result);
18 })
19 }
20 })
21 }
22 })
23
24
25
26 // 回调深渊 - ES6 - 实例
27 function callbackAbyssEs6(a, b, cb) {
28 return new Promise(function (resolve, reject) {
29 setTimeout(function () {
30 resolve(a + b);
31 }, 1000)
32 })
33 }
34 // 回调深渊 - ES6 - 调用
35 callbackAbyssEs6(1, 2)
36 .then(function (result) {
37 if (result > 2) {
38 console.log('es6回调深渊第1次输出结果:', result);
39 return callbackAbyssEs6(2, result);
40 }
41 })
42 .then(function (result) {
43 if (result > 4) {
44 return callbackAbyssEs6(result, 2);
45 }
46 })
47 // ... then(function())