标题看起来确实有些难懂。
由于本人在JS这块编程不是很熟悉,所以我在做项目时候经常遇到这个问题,也困扰了我很久。
关于这个问题,我举个例子吧。
项目中经常有很多地方都使用了同一段代码,为了方便,我喜欢就把它抽出来写成一个函数,比如这个funA(),这个函数功能很简单,就是取某些dom的值,进行加加减减操作,然后返回结果。
function funA(){
var i = document.getElementById(...).value;
var j = document.getElementById(...).value;
return i + j;
}
有了funA(),代码量减少了不少。直到有一天,老板说这个函数要改改,不要去读dom的值了,而是要从服务端拉取。
听起来很简单,但实际开发的时候我懵了。
这是因为:
funA()是同步的,什么时候调用它,它就什么时候返回对应的值。而新的funA()是异步的,调用它之后,鬼知道什么时候返回数据给我。
无数的代码调用了我的funA()函数,所有调用funA()的代码都认为这个函数能够返回想要的数字,我可不想因为funA()去读服务端,就得改无数个地方。
还有更多的类似funA()的函数面临这种改动。即原本是同步的函数,某一天非得改成异步的。
请教各位JS大神,你们是怎么解决我这个问题的呢?
要么把你那一堆调用funA的代码写在funA调用完成的方法中,
要么把funA的调用改成同步的,就是jQuery的$ajax中的那个异步属性改成false。
一个函数是没有办法控制你后续代码的执行的。