异步难点与突破
由于之前都是使用同步编程,而JS是异步编程,我想等着某一个函数结束之后再执行另一个函数,结果通通失败。
最近开始使用Hamibot,它其中有大量阻塞函数API,反而简单,让我可以学会了使用回调函数callback,算是意外之喜吧。
异步编程方法
异步编程本身并不是问题,合理使用异步编程,可以提升运行效率(至少对我这样的小白,是的),如果需要用到同步函数,我提供一下思路:
回调函数
回调函数的本意是运行程序结束之后,再执行另一个函数。
但在自己编辑的函数中,它实现的效果,应该理解为,再执行到某一个部分是,执行某一个函数。
例如:
main(function(){
console.log("zhiwk!");
});
function main(callback){
setTimeout(function(){
console.log("hello world!");
},1000);
callback();
}
根据异步编程,就会先执行回调函数,输出“zhiwk!”,再输出“hello world!”。
而我们想反过来,就应该这么写:
main(function(){
console.log("zhiwk!");
});
function main(callback){
setTimeout(function(){
callback();
},1000);
console.log("hello world!");
}
根据异步编程,就会先执行回调函数,输出“hello world!”,再输出“zhiwk!”。
因此,我再次强调,回调函数,不是意味着函数结束时,运行回调函数,而是,代码执行到某一个阶段,执行回调函数。
总结
如果一定需要执行同步编程,且利用自己编写的函数。
可以在一个确定代码执行结束之后的位置,应用回调函数callback()。