0
저는 페이지를로드하고 페이지가로드되면 페이지에서 몇 가지 테스트를 수행하는 전자 응용 프로그램입니다. 페이지로드에 시간 초과를 적용하려면 페이지가로드되지 않으면 5 초 후 다음 항목으로 이동한다고합시다. Javascript setTimeout/clearTimeout 전자의 이상한 행동
var timer;
var urls = [...];
var win = new BrowserWindow({...});
var myURL = "";
var setTimer = function(){
timer = setTimeout(()=>{
console.log(myURL + " timed out");
loadNext();
}, 5000);
}
var loadNext = function(){
if (urls.length > 0){
timer = setTimer();
myURL = urls.pop();
console.log(myURL);
win.loadURL(myURL;
}
}
win.webContent.on('did-finish-load',() => {
clearTimeout(timer);
browserWindow.webContents.send('doTest');
})
ipcMain.on('testResult', (event, data) => {
console.log('done test ' + data);
event.returnValue = 'yay';
})
그리고 내 렌더링 과정에서
는 'doTest'에 수신 및 동 기적으로 메시지를 다시 보내드립니다 리스너있다 :내 코드 내 주요 프로세스의이 같은 것입니다.
대부분의 경우에게,이 코드 작업 :
url1
url1 timed out
url2
done test url2
url3
url3 timed out
...
그러나, 때때로, 그것은 제공 : 페이지가 5 초 후 부하를 완료하지 않은 경우,이 같은 다음 URL 및 출력 올바른 메시지로 이동 이 같은 출력에서 :
urla
urla timed out
urlb
done test urla
done test urlb
urlc
done test urlc
내가 테스트를 수행하는 요청을 보내기 전에 done test urla
이 urla timed out
출력 후 발생해서는 안됩니다 때문에, 시간 제한 기능을 제거 할 것 clearTimeout
을 기대했다. 무슨 일이야?