[gjs/ewlsh/workers-api: 122/124] Worker example




commit e543a74366786d2d57c843eaedbfe3b56e57e3c4
Author: Evan Welsh <contact evanwelsh com>
Date:   Fri Mar 25 17:31:20 2022 -0700

    Worker example

 main.js   | 29 +++++++++++++++++++++++++++++
 worker.js | 13 +++++++++++++
 2 files changed, 42 insertions(+)
---
diff --git a/main.js b/main.js
new file mode 100644
index 000000000..c4b7d2409
--- /dev/null
+++ b/main.js
@@ -0,0 +1,29 @@
+import Gtk from 'gi://Gtk';
+Gtk.init();
+
+log('Initializing...');
+
+const worker = new Worker('./worker.js', {name: '"My New Friend"'});
+
+let value = 0;
+
+const window = new Gtk.Window();
+const box = new Gtk.Box({ orientation: Gtk.Orientation.VERTICAL, spacing: 20, marginTop: 10, marginBottom: 
10, marginStart: 10, marginEnd: 10, });
+const label = new Gtk.Label({ label: `Value: ${value}` });
+const button = new Gtk.Button({ label: 'Add 10' });
+box.append(label);
+box.append(button);
+window.set_child(box);
+
+button.connect('clicked', () => {
+    worker.postMessage(value);
+});
+
+worker.onmessage = (event) => {
+    console.log(`Why hello there my worker thread, I got ${event.data} from you and I'm updating the 
value.`);
+    value = event.data;
+    label.label = `Value: ${value}`;
+}
+window.present();
+
+imports.mainloop.run();
\ No newline at end of file
diff --git a/worker.js b/worker.js
new file mode 100644
index 000000000..cbc5092a2
--- /dev/null
+++ b/worker.js
@@ -0,0 +1,13 @@
+import GLib from 'gi://GLib';
+
+onmessage = event => {
+    console.log(`Why hello there main thread, I got ${event.data} from you. I'm adding 10.`);
+    postMessage(event.data + 10);
+};
+
+setInterval(() => {
+    console.log(`Worker ${name} is still running`);
+}, 5000);
+
+// const ml = new GLib.MainLoop(GLib.MainContext.get_thread_default(), false);
+// ml.run();


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]