callback那些著名的弱点我就不说了,我根据心得,补充两个弱点:
弱点1
如果你实现了一个异步函数,它是通过callback来传递返回值,如:
function my(a,b,callback){
//若干操作
if(...){
callback(result);
}
else{
callback(result);
}
}
那么,调用时会传给你一个函数(就是形参callback对于的实参),
你要始终保证这个函数要被调用一次且仅一次,
多一次少一次都不行!
而且为了保证对外行为的一致性,这仅一次的调用,最好都是异步调用,
不要一个路径是异步调用,另一个路径又是同步调用callback
这个硬性要求,对程序复杂时,特别是程序里有循环时,不好保证呀,很容易多调一次callback,或没调用callback
多掉一次callback的后果,可以自己遐想~~~
弱点2
如果程序有异常,抛出的异常callback catch不了,
想想程序里一层层的callback,异常抛时的那次事件循环,早已不是最外面这层函数代码执行时的事件循环了。
强烈推荐promise来处理异步问题,
它不要求调用一次且仅一次
中间过程抛出异常,也会触发promise的失败函数被调用来通知你
effevo技术团队出品 (https://effevo.com)