我正在使用Ember-Simple-Auth对远程服务器验证我的应用程序,该远程服务器为我提供API令牌,必须通过使用续订令牌每30分钟刷新一次。为此,我包含了对ember-Simple-Auth恢复方法的异步调用,该方法实现了令牌刷新,应该使用setTimeout每25分钟触发一次。然而,在对setTimeout的三次调用中,只有一个正常工作,虽然对我来说它们看起来都是一样的。你有没有机会能帮我解决这个问题?
示例代码:
var openSeadragon, selection;
document.addEventListener('DOMContentLoaded', function() {
openSeadragon = OpenSeadragon({
id: "openSeadragon1",
prefixUrl: "images/",
tileSources: [],
sequenceMode: true,
showReferenceStrip: true,
visibilityRatio: 0.2,
constrainDuringPan: true,
defaultZoomLevel: 0.8,
minZoomLevel: 0.3,
maxZoomLevel: 10,
showNavigator: true,
nextButton: "next",
previousButton: "previous",
minZoomImageRatio: 0.1, //of viewer size
crossOriginPolicy: 'Anonymous',
});
selection = openSeadragon.selection({
onSelection: function(rect) {
alert(rect + ' Center point: ' + rect.getCenter() + ' Degree rotation: ' + rect.getDegreeRotation());
}
});
答案 0 :(得分:0)
尝试简化您的代码。
试试这个:
var timeOutDelay = expirates - current- renewDelay;
setTimeout(restore, timeOutDelay, data);
答案 1 :(得分:0)
你的 this.restore 在两个回调中可能都会引用错误,导致恢复功能永远不会被调用。您是否尝试过调试此所指的内容?使用箭头回调可以解决这个问题,比如
.then((data) => {
...
setTimeout(this.restore, (data.expirates * 1000) - new Date().getTime() - 30000, data);
});