等待来自CDN的Javascript加载

我在Rails应用程序中有这个javascript块,启用了turbo-link:

   var ready = function() { setTimeout(function() { $('#table-products').dataTable(); }, 100); }; $(document).on('ready, page:change', ready);  

通常,我得到的错误是.dataTable()函数未定义,刷新可以解决问题。 但是,刷新并不总是令人愉快的,所以我将setTimeout添加了100ms以等待来自CDN的js加载。

到目前为止,我在开发环境中没有看到任何问题,但我担心如果有一个慢客户端,js将无法在100ms内完成加载。 我想知道是否有更好的解决方法,比如检查两个js文件是否已加载,类似于$(document).ready for DOM。

谢谢!

实际上有一个gem 。 它非常易于使用,并带有引导样式选项。 这比你拥有的更优雅,因为它不依赖于CDN,而是利用Rails资产管道。

尝试

       

jsfiddle http://jsfiddle.net/guest271314/RZVRL/

请参阅https://api.jquery.com/jQuery.holdReady/

我能找到的最优雅的方法是将所有cdn链接移动到布局页面中,以便加载和缓存所有库以获得整个用户体验。