描述:最近使用html2canvas插件截取页面上指定dom为图片,然后将生成的图片替换页面上的dom后,将替换后的页面内容保存至数据库,结果保存的是保存前的页面,初步判定是html2canvas的异步执行造成的。
参考了两篇博文:
一、H5 -- (功能)基于html2canvas实现长按网页保存为图片到本地
https://blog.csdn.net/weixin_41076513/article/details/80896399
二、漫谈javascript同步&异步编程的N种方式 - ps:将html2canvas变成同步的解决方案
http://www.cnblogs.com/quenteenfix/p/3556269.html
对html2canvas的使用很有帮助,但遗憾的是最终并没有让我实现接下来的同步执行方法;
于是又发现了下面这篇文章:使用ajax 回调函数返回值 使用Promise完美解决(不是异步)
https://blog.csdn.net/fastjack/article/details/79981261
根据文章所讲,发现html2canvas方法返回的确实是一个Promise对象,也确实可以用返回的promise对象.then()或Promise.all().then()方法实现同步执行;
最终打印的顺序:
说明确实Promise.all()中的方法在html2canvas后执行,即为同步执行;