electron app quit 和 exit 的區別


在electron中,app.quit()和app.exit()都是用來退出程序的,但是它們之間有什么區別呢?我們一探究竟。

默認退出

如果你沒有監聽window-all-closed事件並且所有窗口都關閉了,默認的行為是退出程序

監聽window-all-closed

假設你的electron應用開了3個窗口,然后都被關閉了,然后你監聽了window-all-closed事件,electron會window-all-closed觸發事件,你可以在回調函數中控制是否退出程序:

const { app } = require('electron')
app.on('window-all-closed', (evt) => {
  app.quit() // 顯示調用quit才會退出
  // 回調函數什么也不做也不會退出
});

app.quit()

當開發者調用了 app.quit(),如果此時所有窗口已經關閉,直接觸發quit事件;否則Electron 會首先觸發before-quit,然后開始關閉所有的窗口,然后觸發 will-quit 事件,注意在這種情況下 window-all-closed 事件不會被觸發,所以你可以放心在window-all-closed里使用app.quit(),而不用擔心會出現無限遞歸。

那么調用app.quit()是不是一定可以quit呢,答案是否定的,在before-quit,will-quit中調用event.preventDefault();在window的close事件回調函數中阻止窗口關閉,都可以使程序退出失敗。所以app.quit()就像一個溫和的人,有點婆婆媽媽的,發出事件,大家商量着來。結果也就有失敗的可能。那么有更粗暴的嗎?就是app.exit了
uploading-image-717431.png

app.exit()

app.exit()可是個狠人,調用之后,什么回調函數都沒有,跟別的代碼也沒的商量,直接退出。與之類似的是window.destroy(),不會像window.close那樣通知一堆事件,直接強制關閉
.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM