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

有没有人遇到过这个问题哈!前端是不是相当于后端的多线程编程?感激不尽

有没有人遇到过这个问题哈!前端是不是相当于后端的多线程编程?感激不尽

POPMUISE 2019-06-19 09:50:23
所以一般情况下是不是前端要考虑的情况更多,更复杂?
查看完整描述

2 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

不是的,后端通常使用多线程来解决耗时操作,一个耗时操作只能阻塞一个线程,其他线程还可以处理其他的请求。这样后端可以采用同步编程的方式,前面的代码肯定在后面代码之前执行,后面代码可以用前面代码的结果,逻辑上比较清晰。
但前端一个页面只有一个ui线程,没法多线程,耗时操作会阻塞整个浏览器页面。所以对于耗时操作,前端不能用同步的编程方式,只能用异步编程方式,用回调函数,层层嵌套的回调函数造成回调地狱,非常难以阅读和维护。所以前端逐步发展出对付异步编程的方法,最早的是Promise和Observable,后来的async/await,让异步代码看起来像是同步,但只是伪同步,代码还是比后端的真同步难写。
虽然前端没有多线程的同步互斥问题,但总的来说,异步代码总是比同步代码难写。
前端js异步编程也有一个好处,只用很少的线程,并发量大的时候效率更高,引起线程切换也很耗资源。所以后端也引进了异步编程,比如nodejs,还有playframework2也是异步的,利用了promise或者java8中类似promise的机制。
                            
查看完整回答
反对 回复 2019-06-19
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

前端的JS解释引擎只有一个线程,相当于后端的主线程,其余线程均由浏览器进行实现,并暴露相应的API给JS执行引擎,这些API通常要求JS绑定一个函数,以便回传结果。事实上,JS代码通常不会全程运行,而是函数绑定的事件发生之后,将函数语句放到调用栈里逐条执行。至于孰难孰易,听说后端比较难咯。
                            
查看完整回答
反对 回复 2019-06-19
  • 2 回答
  • 0 关注
  • 255 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信