Jam*_*uth 8 jquery jquery-deferred
我一直在调查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 );
Run Code Online (Sandbox Code Playgroud)
这对我来说是一种确保您的脚本只有在您$.getScript()成功的情况下才能执行的方法.
至于我的实验已经消失了,即使我提供了一个不正确的URL,也不会调用错误回调.
我错过了一些明显的或者代码示例错了吗?
注意:我在网站上问过这个问题,但评论系统不起作用.:-S
我相当确定该脚本无法处理跨域请求。
$.getScript对于本地和跨域请求以不同的方式工作。对于本地请求,它通过 AJAX 加载内容然后运行它。由于这是正常的 AJAX 操作,因此会以正常方式发生错误。据我测试,该代码运行良好。
然而,对于跨域请求,它的工作原理是script在文档中插入标签。 插入的元素error永远不会触发处理程序,因此您的回调永远不会触发。scripterror
| 归档时间: |
|
| 查看次数: |
3364 次 |
| 最近记录: |