@abcbuzhiming 非异步代码执行完前不能刷新 dom 这点是现在浏览器共同的做法, dom 重绘的开销非常大,所以在一段非异步代码内所有的 dom 操作只有在这段代码结束后才会渲染,目前并没有浏览器提供在当前强制重绘的接口,因为没有意义, js 是单线程的,你想把每次修改都反应出来又不想阻塞主进程,那就只能把所有操作都写成异步的,但即使异步中每次操作都修改了 dom 浏览器也不会马上刷新,也会等到下一个 frame 才重绘,如果你只是不想写 setTimeout 或者回调嵌套的话就用 async 直接把异步按照同步的方法来写。