我一直在研究 jQuery 中的新(ish)延迟对象,我在这里偶然发现了这篇网站文章。
在文章中是一些设计用于缓存脚本的代码,因此它们不会被多次请求。
var cachedScriptPromises = {};
$.cachedGetScript = function( url, callback ) {
if ( !cachedScriptPromises[ url ] ) {
cachedScriptPromises[ url ] = $.Deferred(function( defer ) {
$.getScript( url ).then( defer.resolve, defer.reject );
}).promise();
}
return cachedScriptPromises[ url ].done( callback );
};
// You would then call it like thus.
$.cachedGetScript( url ).then( successCallback, errorCallback );
$.getScript()
这对我来说是一种确保脚本只有在你成功 的情况下才会被执行的方法。
就我的实验而言,即使我提供了不正确的 url,错误回调也不会被调用。
我错过了一些明显的东西还是代码示例错误?
注意:我会在网站上问过这个问题,但评论系统不起作用。:-S