问题描述
工作中遇到了页面假死的问题,表现为请求没有正常返回,一直显示pending,页面无法正常交互,像卡死一样。后台将接口修复后情况消失。
但ajax请求为异步,为何出现这种情况?
查看代码后发现涉及到的接口均使用了async/await语法糖,变成同步接口导致页面假死。
解决方案
作为前端的方案是减少非必要的async/await使用。
扩展:async/await的优缺点
作为promise的语法糖,async/await解决了promise.then链过长的缺点,但它会阻塞代码的运行,滥用会降低页面性能,甚至发生像此次页面假死的问题。所以在非必要使用它的情况下可以将需同步的代码写在请求的回调函数中来代替。