我有一个设置超时的简单循环,经过一段时间,大约16分钟后,它停止工作,我不知道为什么。 你知道为什么或解决方案来理解什么是错误的吗?
代码非常简单:
private const initialCoords: Dictionary = new Dictionary();
private function saveInitialCoords(clip: DisplayObject): void {
initialCoords[clip] = new Point(clip.x, clip.y);
}
private funciton retreiveInitialCoords(clip: DisplayObject): Point {
return initialCoords[clip]; // it would return null if there is no coords
}
重复此功能,但约16分钟停止循环。
答案 0 :(得分:0)
当前代码(根据假设):
function setData() {
for(var i=0;i<6;i++) {
setTimeout(function(){console.log(i)},3000)
}
}
建议:
function setData(){
for(var i=0;i<6;i++){
settingData(i);
}
}
function settingData(i){
console.log(i);
}
由于setTimeOut在单独的上下文中运行,它将丢失传递的初始值。因此,通过迁移到单独的函数调用,它不会松开上下文。