In primo luogo è necessario comprendere che il lavoratore è un nuovo thread o un processo, e questo non include la finestra e documenti oggetti.
Cordova crea un'interfaccia tra la webview e l'API nativa. Se si esegue un worker, non si ha accesso a questa interfaccia API, quindi non è possibile utilizzare plugin o core cordova.
ho cercato di importare lo script cordova.js in un operaio:
loadScript('../cordova.js');
Ma getta un errore quando non trova la finestra di oggetto. Infine, emulando gli oggetti:
self.window = this;
self.window.document = this;
loadScript('../cordova.js');
La sceneggiatura del Cordova getta "ReferenceError: promp non è definito".
D'altra parte, è necessario comprendere, la comunicazione tra WebView e il codice nativo, sono asincroni. Se si invia una query SQLite ad esempio, il codice JavaScript continua a essere eseguito, quando la query viene risolta, l'API invia un evento a WebView e si esegue la richiamata.
Io uso i lavoratori ad esempio per crittografare i dati, perché questo processo è troppo difficile e causa il blocco. Ma se hai bisogno di usare i plugin Cordova, non avrai questo problema.
C'è una spiegazione to understand this.
Per SQLite, si consiglia di utilizzare Cordova-SQLitePlugin.
Se è necessario il proprio hight-processo, è possibile conoscere come fare i plugin: https://cordova.apache.org/docs/en/4.0.0/guide_hybrid_plugins_index.md.html
Nel frattempo, è possibile utilizzare i lavoratori e per inviare e ricevuto i dati, ma non con risorse riferimenti. E si noti che usando apis (come SQLite), questo sarà asincrono e non è necessario aprire un altro processo per eseguirli. Puoi semplicemente inviare il risultato a un lavoratore e lavorarlo da lì.
Grazie per una risposta ben ponderata con riferimenti. Il tuo inglese non è male ... soprattutto considerando che stiamo usando termini complessi per un argomento specifico. La grazia è tua! – Neaox