2017-01-26 5 views
-1

Warum ist es möglich, in Knoten (Elektron), so etwas zu schreiben:Warum funktioniert eine Handler-Funktion nur anonym in electron/node.js?

app.on('ready', function() { 
    mainWindow = new BrowserWindow({ 
     width: 800, 
     height: 480 
    }); 
}); 

aber thows einen Fehler, dass app is not ready?

app.on('ready', onReady()); 

function onReady() { 
    mainWindow = new BrowserWindow({ 
     width: 800, 
     height: 480 
    }); 
} 
+5

Dies könnte falsch sein, aber ich denke, man muss nur den Funktionsaufruf entfernen .. . 'app.on ('bereit', onReady)' – thesublimeobject

Antwort

1

Es ist, weil Sie Funktionsreferenz und Funktionsaufruf verwirren.

Beachten Sie, dass die Funktion onReady nichts zurückgibt. Standardmäßig bedeutet dies, dass es undefined zurückgibt.

So dies zu tun:

app.on('ready', onReady()); 

Dies führt zu:

app.on('ready', undefined); 

Das heißt, die onReady Funktion aufgerufen wird und es ist Ergebnis app.on() übergeben wird.

Im Grunde, was Sie getan haben, ist dies:

app.on('ready', (function() { 
    mainWindow = new BrowserWindow({ 
     width: 800, 
     height: 480 
    }); 
})()); 

Was Sie wollen, stattdessen ist:

app.on('ready', onReady); 
+2

Es war ein * offensichtliches * Duplikat. * (nicht mein DV) * –

+0

Dies ist eine gute Erklärung des Problems. – thesublimeobject

Verwandte Themen