js执行顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js执行顺序相关的知识,希望对你有一定的参考价值。

当draw被调用时
之后的执行顺序我觉得应该是先
执行searchByStationName()
然后searchByStationName2()
再alert(coordinate);
奇怪的是执行时我先看到了alert(coordinate);然后才是

执行searchByStationName()
然后searchByStationName2()

参考技术A 1、注意执行的异步和同步。
2、从你的描述来看setSearchCompleteCallBack这个函数执行是一个异步过程,也就是不用等函数执行完,就接着往下执行。
3、所以先alert(coordinate);
4、但实际执行过程还是
1)、searchByStationName()
2)、searchByStationName2()
3)、alert(coordinate);
这你可以在每个函数第一个alert就能够看到现象。
参考技术B 这个就是回调函数的概念了

回调函数:把一个函数作为参数传递到其他的函数里面,这个被传入的函数,就是回调函数。

例如:html5 canvas显示加载图片,开始的时候图片没有加载,但是又要获取他的width,height,于是写个回调函数传入img的onload方法里面,就可以了

这个类似:

隐式调用的匿名函数
function (searchResult) ...
就是个回调函数
传入到了localSearch的setSearchCompleteCallback方法中,作为参数。

也就是说这个本来是最后才有的,所以才是先执行了那个alert,这个就是回调了


追问

searchByStationName(); --------------------1

searchByStationName2();--------------------------2
alert(coordinate);-------------------------------3
为什么先显示了3
回调函数里也有一个alert(coordinate);,那个是我命名失误让你看误了

追答我的意思就是先是这个3,回调:顾名思义:等主函数执行完后,再返回去调用

追问

searchByStationName();
searchByStationName2();
分别保函了回调函数,但如果因此就先执行第三行的alert那么他回不去了呀?

本回答被提问者和网友采纳
参考技术C 这么说吧,你写的coordinate=***只是一个赋值操作,并没有立即调用啊。
如果你写的是
coordinate();
alert('1');
肯定是coordinate现在执行啊。
如果你这题没有alert,coordinate根本就不会执行。

以上是关于js执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

js的加载顺序

js 顺序 调用 2个函数。函数 的 执行 顺序 问题

JS执行顺序

js函数执行顺序,怎麼让一个函数执行完再执行下面的程序

钩子函数的执行顺序

js能不能通过返回值顺序执行