再次跟大家推荐scott老师的教程,感觉能学到很多东西
javascript回调函数的反人类写法
在javascript中如果要先执行fun1,然后执行fun2,一般采用回调函数方法,方法如下
var a = 0,
b = 20
function add(num,callback){
setTimeout(function(){
if(num==10||num ==30){
callback&&callback()
}else{
num++
console.log(num)
add(num,callback)
}
},100)
}
add(a,function(){
add(b)
})
注意 不能使用add(a,add(b))的方法调用,具体还不知道为什么。如果大家有知道的希望告知我一下哦~谢谢!一起进步嘛
可是这个方法呢其实比较恶心,这里是有一层回调函数,如果有很多层回调的话将会特别麻烦的。于是我们可以使用Promise
安装
首先需要在项目中安装bluebird
npm install bluebird
不过还需要引入进来
<script src = "./node_modules/bluebird/js/browser/bluebird.js">
</script>
引入之后再浏览器中就有一个全局变量Promise。
接着我们就可以这样写
function promiseAdd(num){
return new Promise(function(resolve,reject){
function _add(num,callback){
setTimeout(function(){
if(num==10||num ==30){
resolve()
}else{
num++
console.log(num)
_add(num,callback)
}
},100)
}
_add
}
}
promiseAdd(a)
.then(function(){
return promiseAdd(b)
})
.then(function(){
//blabla
})
.then(function(){
//blabla
})
这样写起来就清晰了很多