我正在尝试将模块YSlow实现到我自己的项目中。我想要使用的函数如下所示:
YSLOW.registerRuleset = function (ruleset) {
YSLOW.controller.addRuleset(ruleset);
};
据我所知,YSlow在开头的代码中分配在这里:
if (typeof YSLOW === 'undefined') {
YSLOW = {};
}
我希望能够导出此类并能够使用此功能。我通常只会说:
exports.sayHello = function() {
return "Hello"
};
但是,当YSLOW开始时,我不确定如何正确地与registerRuleset()进行通信。如果我在yslow.js中放置sayHello(),我可以使用它,但对于任何使用YSLOW的函数,它都不起作用。我已经尝试在函数中将YSLOW之前和之后的导出放在一个函数中但是没有成功。
所以我的问题是,我该如何解决这个问题呢?就此而言,YSLOW.function()甚至做了什么,它的重要性是什么?
谢谢!
答案 0 :(得分:0)
我不熟悉YSLOW,因此我不清楚您的查询。
如果您正在尝试检查是否加载了YSLOW类对象,则下面的代码可能有助于识别是否已加载。 此代码将继续轮询对象准备就绪并可用。这将轮询20毫秒(您可以增加到更多)。
它是一种黑客,您可以继续轮询对象,无论它是否已加载并可以使用。
function checkLoaded() {
if (YSLOW && YSLOW.controller && YSLOW.controller.addRuleset) {
return true;
}
return false;
}
/* Start: polling to check if YSLOW Objects are ready */
var timeout = Date.now() + 10000,
startTime = Date.now();
var intervalID = window.setInterval(function () {
if (checkLoaded()) {
console.log("GOT Ready at: ", Date.now() - startTime + "ms");
window.clearInterval(intervalID);
initLoad();//do your stuffs after loading here.
} else if (Date.now() > timeout) {
console.log("Not loaded, kill the polling.");
window.clearInterval(intervalID);
failedLoad(); //do your stuff for not loaded here
}
}, 20);