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」だと同期メッセージを送り返します。
ほとんどの部分については、このコードの動作:ページは5秒後に負荷を完了しなかったとき、それはこのように次のURLを出力正しいメッセージに移動します。時折、しかし
url1
url1 timed out
url2
done test url2
url3
url3 timed out
...
、それができますこのような出力OUT:
urla
urla timed out
urlb
done test urla
done test urlb
urlc
done test urlc
私はテストを実施するための要求を送信する前にdone test urla
がurla timed out
出力した後に発生しませんので、タイムアウト機能を削除しますclearTimeout
を期待しました。どうしたの?