由于之前都是使用同步编程,而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()。