前言
node.js最大的特色就是利用回调函数的方式来异步执行,但是回调函数的出现引发了回调过度嵌套的问题(回调金字塔),例如a嵌套b,b再嵌套c,c再嵌套D。例如,我们模拟一个页面元素移动的功能,点A移动到B后,B再移动到C,C再移动到D,D再移动到E,使用函数嵌套的方式如下:
function movea() {
console.log('我是A,我已经移动到B的位置了哦');
moveb(function(value) {
movec(function(value) {
moved();
})
})
}
function moveb(callback) {
console.log('我是B,我已经移动到C的位置了哦');
callback();
}
function movec(callback) {
console.log('我是C,我已经移动到D的位置了哦');
callback();
}
function moved() {
console.log('我是D,我已经移动完毕');
}
movea();
可以看到,movea函数里面有一层一层的嵌套,有没有什么办法可以解决此问题呢?答案是Promise。
什么是Promise
书上这么说:
Promise 是异步编程的一种解决方案,比传统的解决方案–回调函数和事件--