为了账号安全,请及时绑定邮箱和手机立即绑定

我搞不懂函数执行是同步的还是异步的

  window.onload = function() {
            addCount();
            setTimeout("noneAds()", 5000); //停留时间自己调了 
        }
像我发的这段代码,是等执行完 addCount();这个函数后,再执行  setTimeout("noneAds()", 5000);这段代码吗?还是说两者是分开执行的
我搞不懂函数执行是同步的还是异步的


添加回答

5回答
2017-01-11 心有猛虎_细嗅蔷薇

不在于你做什么,只在于你怎么做。在编程的战场中,一...

要搞清楚setTimeout()方法的使用:用于在指定的毫秒数后调用函数或计算表达式并且只执行 code 一次。

这个展开与收起效果只执行了一次。也就是说当页面加载完成以后,先执行addCount()函数,当到达展开一定高度后,就开始执行setTimeout()方法,5000ms后开始执行noneAds()函数。

P.S 就我目前所知,JavaScript函数的同步与异步是Ajax中术语,相信你学到那就会渐渐明白了。

希望对你有帮助^_^


赞同4 反对 0个回复
未知生物
你还没有登录,请先登录注册慕课网帐号

回复
2017-01-11 lxlacie 由此问题已获得 +3积分

这位童鞋很懒,什么也没有留下~~!

    JavaScirpt中代码的执行顺序是从上到下顺序执行。像你发的这段代码,从上到下,先执行完addCount(),然后再开始执行setTimeout("noneAds()", 5000);

    同步代码的程序顺序执行的方式是学习编程的第一课,异步调用并不会阻止代码的顺序执行,而是在将来的某一个时刻触发设置好的逻辑,所以我们并不知道逻辑什么时候会被调用 只能定义当触发的时候逻辑是什么 只能等待,同时可以去处理其他的逻辑 setTimeout就是这样的一个异步调用。


已被提问者采纳 赞同 反对 0个回复
未知生物
你还没有登录,请先登录注册慕课网帐号

回复
2017-01-11 拟人

 

javascript代码是同步的,单线程的,就是由上往下执行,按照我的理解来说,只有ajax是异步的执行了,线程遇到ajax的代码段时,主线程不会去执行ajax里的代码,而是跳过这段代码。那ajax里的代码谁去执行呢?这个任务交给了浏览器的线程(不是javascript的线程,javascript的线程已经跳过了再往下执行别的代码,同一时间点执行了多个任务,这个也许就是异步吧),然后等主线程上任务都执行完了之后,ajax再将执行的结果返回进行处理,就是执行success function(){...}里面的方法。而setTimeout()其实并不是真正意义上的异步,不会同一时间点执行多个任务,它的作用的,将setTimeout()包裹的代码段移动到执行任务的最后,而里面的那个时间参数表示的是执行这段代码的最短时间,就算参数为0,也会放到最后执行。

赞同1 反对 0个回复
未知生物
你还没有登录,请先登录注册慕课网帐号

回复
2017-01-11 圣斗士小鑫

 

For Example:

{

A方法(输出1);

setTimeout(回调函数(输出2), 5000); 

B方法(输出3);

}

setTimeout会在A方法执行完后执行

当A方法执行完后,setTimeout进入计时的同时,B方法也同时执行。

在上个例子中,输出结果为 1  3  2

赞同1 反对 0个回复
未知生物
你还没有登录,请先登录注册慕课网帐号

回复
2017-01-11 蓝调灬雨歇

 

先执行上面的,上面的结束了才执行下面的,你可以自己试验一下,自己写两个弹出函数

赞同1 反对 0个回复
未知生物
你还没有登录,请先登录注册慕课网帐号

回复
意见反馈 常见问题 APP下载
官方微信