流星:等待库准备好

Meteor: Wait until Library is ready

本文关键字:准备好 等待 流星      更新时间:2023-09-26

我为Meteor开发了一个包,其中包括另一个JavaScript库(Ziggeo),通过将它们的脚本附加到HTML头。

这是来源https://github.com/Goltfisch/meteor-ziggeo/blob/master/ziggeo.js

我有时会得到一个错误,如果我想从使用包的流星应用程序中调用它,ZiggeoApi没有定义。

似乎ZiggeoApi有时加载得有点慢,所以它不能立即对客户端可用。

如何在客户端等待ZiggeoApi功能可用?

我测试过像

这样的东西
Tracker.autorun ->
  if ZiggeoApi?
    console.log 'ZiggeoApi is ready'

或者放在Template.foo.onRendered / Template.foo.onCreated

但是它不工作。

提前感谢!

这是一个肮脏的解决方案,定期检查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);

把你的库放在lib/目录下,这样它就会很快加载到你的应用程序中。

下面是Meteor文档中的加载顺序:

  1. HTML模板文件总是在其他文件之前加载
  2. 以main开头的文件最后加载
  3. 任何lib/目录中的文件都将在下一个加载
  4. 路径更深的文件在
  5. 下加载
  6. 然后按整个路径的字母顺序加载文件