<script> // Promise IE不兼容,需要找shim一下 let loadScript = function () { return function _loadScript(url, callBack) { return new Promise(function (resolve) { let script = document.createElement('script') script.type = 'text/javascript' if (script.readyState) { // 兼容IE的script加载事件 script.onreadystatechange = function () { // loaded : 下载完毕 complete: 数据准备完毕。这两个状态ie可能同时出现或者只出现一个 if (script.readyState === 'loaded' || script.readyState === 'complete') { // 防止加载两次 script.onreadystatechange = null callBack() // 把函数传递下去,保证能顺序加载js resolve(_loadScript) } } } else { script.onload = function () { callBack() resolve(_loadScript) } } script.src = url document.head.appendChild(script) }) } }() loadScript('./p1.js', () => { console.log('p1-loading') }).then(res => { return res('./p2.js', () => { console.log('p2-loading') }) }).then(res => { res('./p3.js', () => { console.log('p3-loading') }) }) </script>
promise顺序动态加载JavaScript
最新推荐文章于 2024-11-05 11:24:39 发布