javascript - .getScript() 回调可多次使用

标签 javascript jquery callback promise

如果我有 2 个 JS 文件,例如 a.jsb.js

a.js

$.getScript('some.js',function(){
   //Call some function in some.js
});

在文件b.js中,我将调用函数somesome.js,但是如何知道some.js已加载?

我可以做一些类似的事情吗..(在b.js中)

SomejsIsLoaded.then(function(){
   //Call some function in some.js
});

.then() .promise() ?

最佳答案

$.getScript() 返回一个 jqXHR Promise,可以分配给以后使用。

你可以写...

var somejsPromise = $.getScript('some.js', function() {
    //Call some function in some.js
});

...但最好不要使用全局命名空间,因此您可以使用 jQuery 命名空间:

$.somejsPromise = $.getScript('some.js', function() {
    //Call some function in some.js
});

如果脚本“some.js”未加载,您还应该包括一些错误处理。至少,记录错误:

$.somejsPromise = $.getScript('some.js', function() {
    //Call some function in some.js
}).then(null, function(error) {
    console.log('getScript(some.js)', error);
});

此后,运行“some.js”中提供的脚本的唯一安全方法是使用指定的 Promise 的 .then() 方法:

$.somejsPromise.then(function() {
    //Call some function in some.js
}, function() {
    //handle the case that some.js fails to load.
});

如果 some.js 已加载,回调将立即运行。

如果 some.js 尚未加载,回调将排队,并在加载 some.js 时运行。

如果 some.js 失败(或将要失败),则错误处理程序将运行。

关于javascript - .getScript() 回调可多次使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30254192/

相关文章:

javascript - 在 IE 中使用 Javascript 获取 Flash 电影

javascript - 如何从 DLL 创建对象并使用 edge.js 调用其方法之一?

javascript - 使用 lodash 重置对象数组

javascript - underscore.js 的替代解决方案

jQuery Drag Dock Panel like silverlight黑光控制工具包拖拽面板

javascript - while 循环中的异步函数

asp.net - 无论如何要在上传前确定文件大小?

jQuery UI 自动完成 : Getting reference to the ul

c++ - 应该使用什么优雅的方法回调设计?

php - 如果我在调用 href 链接的同时调用 flash 函数,flash 函数是否始终会被执行?