下面的代码在回调内部进行回调。为什么需要这个?为什么不能单独打3个电话?注意loadScript只是要创建一个样式标签,并动态添加传递给src属性的脚本。
loadScript('/ my / script.js',function(script){
loadScript('/ my / script2.js',function(script){
loadScript('/ my / script3.js',function(script){
// ...continue after all scripts are loaded
});
})
});
在这种情况下,您正在使用回调来确保每个脚本在下一个脚本之前完成加载。它们被链接在一起,因此在继续代码之前必须先加载所有三个脚本。这很重要的原因是脚本在加载时会阻止其余的渲染/执行。如果要对此进行漂亮处理,还可以使用async / promise语法在每一行中保持加载:
const loader = new Loader({
src: 'cdn.segment.com/analytics.js',
global: 'Segment',
})
// scriptToLoad will now be a reference to window.Segment
const scriptToLoad = await loader.load()
// https://timber.io/snippets/asynchronously-load-a-script-in-the-browser-with-javascript/
https://www.html5rocks.com/en/tutorials/speed/script-loading/