JavaScript中的回调
我正在研究回调和其他类似的东西,在这个 book()有一个示例,其中包含以下代码JavaScript中的回调,javascript,Javascript,我正在研究回调和其他类似的东西,在这个 book()有一个示例,其中包含以下代码 function loadScript(src, callback) { let script = document.createElement('script'); script.src = src; script.onload = () => callback(script); document.head.append(script); } loadScript('https://cdnj
function loadScript(src, callback) {
let script = document.createElement('script');
script.src = src;
script.onload = () => callback(script);
document.head.append(script);
}
loadScript('https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.2.0/lodash.js', script => {
alert(`Cool, the script ${script.src} is loaded`);
alert( _ ); // function declared in the loaded script
});
它将动态创建的带有给定src的新标记
附加到文档中
浏览器会自动开始加载,并在完成后执行。我有一个问题:
我是否理解正确,它应该与任何类型的链接一起工作,并在该链接上获取(获取)函数及其结果
在本例中,第二个警报应该显示该函数的某种结果
如果是这样,如何在src中插入另一个带有代码的链接?我尝试了许多其他链接,但第二个警报不起作用。例如:
function loadScript(src, callback) {
let script = document.createElement('script');
script.src = src;
script.onload = () => callback(script);
document.head.append(script);
}
loadScript('https://jsfiddle.net/Rom28/7rL28mso/', script => {
alert(`Cool, the script ${script.src} is loaded`);
alert(test()); // function declared in the loaded script
});
请向我澄清一下。
我还想问一下,在这段代码中,null
是什么意思:
function loadScript(src, callback) {
let script = document.createElement('script');
script.src = src;
script.onload = () => callback(**null**, script);
script.onerror = () => callback(new Error(`Script load error for ${src}`));
document.head.append(script);
}
它与上面的代码相同,但也具有处理错误的功能。src参数应包含指向js文件的链接(JSFIDLE link不包含js代码,因此无法工作)。例如,您可以尝试创建包含test函数的script.js文件,并将loadScript函数放入html文件中:
function loadScript(src, callback) {
let script = document.createElement('script');
script.src = src;
script.onload = () => callback(script);
document.head.append(script);
}
loadScript('script.js', script => {
alert(`Cool, the script ${script.src} is loaded`);
alert(test()); // function declared in the loaded script
});
现在您可以访问用script.js编写的测试函数了https://jsfiddle.net/Rom28/7rL28mso/不是javascript文件。尝试附加一个
onerror
处理程序,并查看您的控制台。