所以一般情况下是不是前端要考虑的情况更多,更复杂?
2 回答
动漫人物
TA贡献1815条经验 获得超10个赞
不是的,后端通常使用多线程来解决耗时操作,一个耗时操作只能阻塞一个线程,其他线程还可以处理其他的请求。这样后端可以采用同步编程的方式,前面的代码肯定在后面代码之前执行,后面代码可以用前面代码的结果,逻辑上比较清晰。但前端一个页面只有一个ui线程,没法多线程,耗时操作会阻塞整个浏览器页面。所以对于耗时操作,前端不能用同步的编程方式,只能用异步编程方式,用回调函数,层层嵌套的回调函数造成回调地狱,非常难以阅读和维护。所以前端逐步发展出对付异步编程的方法,最早的是Promise和Observable,后来的async/await,让异步代码看起来像是同步,但只是伪同步,代码还是比后端的真同步难写。虽然前端没有多线程的同步互斥问题,但总的来说,异步代码总是比同步代码难写。前端js异步编程也有一个好处,只用很少的线程,并发量大的时候效率更高,引起线程切换也很耗资源。所以后端也引进了异步编程,比如nodejs,还有playframework2也是异步的,利用了promise或者java8中类似promise的机制。
慕田峪4524236
TA贡献1875条经验 获得超5个赞
前端的JS解释引擎只有一个线程,相当于后端的主线程,其余线程均由浏览器进行实现,并暴露相应的API给JS执行引擎,这些API通常要求JS绑定一个函数,以便回传结果。事实上,JS代码通常不会全程运行,而是函数绑定的事件发生之后,将函数语句放到调用栈里逐条执行。至于孰难孰易,听说后端比较难咯。
添加回答
举报
0/150
提交
取消