私は複数のウィンドウがURLのプールからURLを読み込み、ipcRenderを使って情報を返す電子アプリケーションを作りたいと思っています。電子複数ウィンドウ通信
main.js:
function foo(){
var urls = [ urls ....]
for(var i = 0; i < 3; i++){
var window = new BrowserWindow({
webPreferences: {
preload: "preload.js"
}
})
window.webContents.on("did-finish-load"), function(){
window.webcontents.executeJavascript("helloWorld()")
console.log(i)
}
// Omitted some checks
window.load(urls.shift())
}
ipc.on('helloworld', function(event, data){
console.log(data)
if (urls.length >= 1){
event.returnValue = urls.shift();
} else {
event.returnValue = 'done'
}
})
}
app.on('ready', foo)
preload.js
helloWorld = function(){
var result = ipc.sendSync('helloWorld', 'hey there')
if (result != done){
window.location = result;
}
}
出力:そこ 2heyが 2heyが 2hey
私のデザインは、次のようになります。 ...
現在のコードの種類はうまくいきます:ページのロードが完了してhelloWorld関数が実行されると、URLのロードが継続され、ipcMainからデータを取得できました。
しかし、3つのウィンドウが非同期で動作することを期待しているのではなく、3つのウィンドウのうち1つのみがこれを実行しています。他の2つのウィンドウは最初のウェブサイトを読み込んでいるだけで、何もしません。
なぜこれが起こっていますか、これを実装するための適切な方法は何でしょうか?
ありがとうございます!
ありがとうございました!!! – user1948847