zl程序教程

您现在的位置是:首页 >  后端

当前栏目

es6 - 回调深渊

ES6 回调
2023-09-11 14:14:38 时间

带着以下疑问来解答以下问题,你会学到很多

 

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())