2 回答
![?](http://img1.sycdn.imooc.com/54586431000103bb02200220-100-100.jpg)
TA贡献1752条经验 获得超4个赞
事实证明,删除代码比添加代码容易得多。感谢@cucaracho 和@barmar 提供重要见解。这是我想出的解决方案。
我不再需要 AJAX 调用了——这就是我想要删除的。从 loadPluginJsFn 中删除回调被证明是一个挑战。我打扫了房子并确认它仍然正常运行。
loadPluginJsFn(token) {
r = token,
doc = document.createElement("script");
doc.type = "text/javascript";
doc.src = "js/foobar.js";
document.querySelector("head").appendChild(doc);
}
![?](http://img1.sycdn.imooc.com/545863dc00011d2202200220-100-100.jpg)
TA贡献1772条经验 获得超6个赞
这是将该函数翻译成更易读的代码:
loadPluginJsFn: function(cb) {
if (typeof cb == "function") {
cb(function(response) {
if (response) {
r = response;
// Load the script from foobar.js
var url = "js/foobar.js";
var t = document.createElement("script");
t.type = "text/javascript";
t.src = url;
document.querySelector("head").appendChild(t);
}
});
}
}
cb将是执行 AJAX 请求的函数<some domain>。收到响应后,它会调用function(response)。这将插件变量r设置为响应,然后加载js/foobar.js脚本。
foobar.js然后执行使用该MyPlugin对象的代码(我假设您忽略了这些细节),并且该代码大概使用r.
总结:这从<some domain>使用 AJAX 中获取一个值,将其放入 中的r变量中MyPlugin,然后运行使用该插件的代码。
添加回答
举报