jquery defer和使用getScript的promise

前端之家收集整理的这篇文章主要介绍了jquery defer和使用getScript的promise前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在调查jQuery中的新(ish)延迟对象,我偶然发现了这个网站文章 here.

在本文中有一些代码用于缓存脚本,因此不会多次请求它们.

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()成功时才能执行脚本的方法.

至于我的实验已经消失,即使我提供了一个不正确的网址,也不会调用错误回调.

我错过了一些明显的或者代码示例错了吗?

注意:我在网站上问过这个问题,但评论系统没有用. :-S

解决方法

我很确定该脚本不能用于跨域请求.

$.getScript以不同的方式处理本地和跨域请求.对于本地请求,它通过AJAX加载内容然后运行它.由于这是正常的AJAX操作,因此会以正常方式发生错误.该代码工作正常,只要我可以测试它.

但是,对于跨域请求,它通过将脚本标记插入到文档中来工作.永远不会为插入的脚本元素触发错误处理程序,因此您的错误回调将永远不会触发.

猜你在找的jQuery相关文章