流星:等到图书馆准备就绪

时间:2015-05-21 11:14:23

标签: javascript meteor packages atmosphere.js

我已经为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

但它没有用。

提前致谢!

2 个答案:

答案 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的加载顺序
  
      
  1. HTML模板文件总是在其他所有内容之前加载
  2.   
  3. 以main开头的文件。最后加载
  4.   
  5. 下一个
  6. 加载任何lib /目录中的文件   
  7. 接下来加载具有更深路径的文件
  8.   
  9. 然后按整个路径的字母顺序加载文件
  10.