我目前正在测试一个聚合物元素,需要等待在我的元素中设置一个变量。在搜索了如何指示 Javascript 等待设置变量后,我想出了以下代码:
var behavior;
setup(function(){
behavior = fixture("behavior");
});
test('Behavior loads resources', function(done) {
var waitForI18n = function() {
if(behavior.isI18nLoaded){
clearInterval(interval);
expect(behavior.getKey("test")).to.be.equal("test" + behavior.language.toUpperCase());
done();
}
};
var interval = setInterval(waitForI18n, 50);
});
这适用于 Chrome,但其他浏览器只是冻结并最终崩溃:IE11、Edge、Firefox。我能够在 Firefox 中得到“递归过多”错误,但除此之外没有太多。
我做错什么了吗?有任何想法吗?我试过递归 setTimeout,但行为是一样的:Chrome 可以工作,但其他浏览器不行。