我已经为Meteor开发了一个软件包,其中包括另一个JavaScript库(Ziggeo),将其脚本附加到HTML头部。
这是来源 https://github.com/Goltfisch/meteor-ziggeo/blob/master/ziggeo.js
如果我想从使用该软件包的Meteor应用程序中调用ZiggeoApi
,我有时会收到ZiggeoApi
未定义的错误。
似乎ZiggeoApi
有时加载速度稍慢,以至于客户端无法立即使用它。
在Tracker.autorun ->
if ZiggeoApi?
console.log 'ZiggeoApi is ready'
功能可用之前,我该如何等待客户端?
我测试了像
这样的东西Template.foo.onRendered / Template.foo.onCreated
或将其放入 CSV.open("GreenTea.csv", "wb") do |csv|
csv << ["ObjectID", "PropertyID", "PropertyValue", "SourceID"]
end
但它没有用。
提前致谢!
答案 0 :(得分:1)
这是一个肮脏的解决方案,定期检查API是否存在:
var checkForAPIInterval = Meteor.setInterval(function checkForAPI() {
if(typeof someAPI !== 'undefined') {
notifyAPIReady(); //Do some reactive stuff, use a plain old callback, ...
Meteor.clearInterval(checkForAPIInterval);
}
}, 100);
答案 1 :(得分:0)
将您的库放在lib /目录中,以便在您的应用程序中相对较快地加载它。
以下是来自Meteor Documentation:
的Meteor的加载顺序
- HTML模板文件总是在其他所有内容之前加载
- 以main开头的文件。最后加载
- 下一个
加载任何lib /目录中的文件- 接下来加载具有更深路径的文件
- 然后按整个路径的字母顺序加载文件
醇>