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(),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()可是個狠人,調用之後,什麼回調函數都沒有,跟別的代碼也沒的商量,直接退出。
.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章