请问老师我的异步理解

请问老师我的异步理解

请问一下老师关于异步操作的一些疑问

老师我想知道异步的执行原理,异步操作在我的理解是它被认为是一个很费时间的操作所有js将他异步执行,比如jquery动画,ajax请求,定时器等等。

老师我想问的是所有异步操作都会被加入到队列中,等待主线程执行完毕之后再来执行队列中的异步操作这个没错吧。但是如果之前有很多的异步操作,比如同时存在jquery动画和定时器还有ajax请求。这个时候异步操作都在一起没错吧。此时主线程开始执行异步操作了,是怎样的一个执行顺序,是根据先添加进来的异步操作进行往下执行还是说 哪个异步操作耗时完成首先执行哪一个? (我的理解是主线程执行完所有代码后开始执行异步操作,根据代码从上往下即先添加进异步的开始执行,如果这步还没有完成相应则继续异步执行下一段代码,如果这一步已经完成了则占用主线程开始执行这一步操作。就此往复)请问老师哪里有不对

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

你好,代码都是在浏览器中执行的,不过函数值需要在调用的时候执行,回调函数是在函数调用的时候,传入一个函数作为参数。函数调用的时候,参数也会执行。这个跟线程没关系。建议:同学,先不要再纠结线程和执行顺序的问题了,这个属于计算机底层的语言,属于底层原理,不太好理解,编程能力要达到一定的程度才能理解,目前你只要把老师解释的弄清楚了就可以了。当然,老师知道你可能还有很深层次的疑惑,因为你现在不懂底层原理,所以问的问题会比较奇怪,有些东西是没有可比性的,更没有办法交叉解释,所以老师无从下嘴给你解释。建议同学把老师的解释记住,在使用方面先不能出错,这对ajax学校来说已经达标了。关于底层原理是需要有编码能力的沉淀才能理解的,等后面把js都学完了,你的能力达到了,再慢慢消化,到时候我们可以再讨论。

祝学习愉快!

好帮手慕糖 2018-10-16 17:56:23

你好,在AJAX 中异步的原理,可参考如下:

1、发送一个AJAX请求的时候,浏览器会有一个专门的线程来进行该任务;

2、而在AJAX中也是有回调函数的,比如请求成功后的回调,失败后的回调,这些回调函数与setTimeout中的回调一样会被推入到事件队列中;

3、浏览器会再次提供一个线程接收AJAX请求返回的数据;

4、事件循环线程这时候知道事件队列中AJAX的回调函数能够被执行了,遍历事件队列;

5、将其中的回调函数交回给js主线程。

异步操作,不是执行完一个在执行一个哦,是指同时进行,是互不影响的。

若能帮助到你,望采纳。

祝学习愉快!

  • 提问者 hy_wang #1
    而在AJAX中也是有回调函数的,请问老师 回调函数浏览器也能执行吗?并不交给主线程吗? 如果交给主线程执行回调,是不是回调仍是需要等主线程空闲了(也就是执行完所有正常代码)才可以执行回调是吗
    2018-10-16 18:04:16
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师