From 2ba0e964fbc2a0a46e112645193bc7a33988dc4e Mon Sep 17 00:00:00 2001 From: guy Date: Sun, 12 Dec 2021 16:23:35 +0800 Subject: [PATCH] worker --- dist/fix/worker.compact.js | 66 +++++++------------------------------- examples/demo.worker.js | 4 +-- src/core/worker.js | 2 +- 3 files changed, 15 insertions(+), 57 deletions(-) diff --git a/dist/fix/worker.compact.js b/dist/fix/worker.compact.js index 63cfbe759..aaeb7016b 100644 --- a/dist/fix/worker.compact.js +++ b/dist/fix/worker.compact.js @@ -1,10 +1,13 @@ ;(function () { var contexts = {}; + var init = false; var WORKER; - BI.useWorker = function (wk) { - WORKER = wk; + var enableWorker = function () { + if (init) { + return init; + } var _init = BI.Widget.prototype._init; BI.Widget.prototype._init = function () { this.$destroyWorker = createWorker.call(this); @@ -29,7 +32,7 @@ } }; BI.Widget.prototype._initRender = function () { - if (WORKER && this._worker) { + if (this._worker) { this.__asking = true; this.__async = true; } else { @@ -46,7 +49,12 @@ console.error(e); } }; - + init = postMessage; + return postMessage; + }; + BI.useWorker = function (wk) { + var postMessage = enableWorker(); + WORKER = wk; if (WORKER) { WORKER.addEventListener("message", function (e) { var data = e.data; @@ -101,57 +109,7 @@ eventType: "destroy" }); }; - } else { - this.store = BI.Models.getModel(modelType, options); - this.store && (this.store._widget = this); - if (this.store instanceof Fix.Model) { - this.model = this.store.model; - } else { - this.model = this.store; - } - initWatch(this, this.watch); - return function () { - this.store && BI.isFunction(this.store.destroy) && this.store.destroy(); - BI.each(this._watchers, function (i, unwatches) { - unwatches = BI.isArray(unwatches) ? unwatches : [unwatches]; - BI.each(unwatches, function (j, unwatch) { - unwatch(); - }); - }); - this._watchers && (this._watchers = []); - if (this.store) { - this.store._parent && (this.store._parent = null); - this.store._widget && (this.store._widget = null); - this.store = null; - } - }; - } - - } - } - - function initWatch (vm, watch) { - vm._watchers || (vm._watchers = []); - for (var key in watch) { - var handler = watch[key]; - if (BI.isArray(handler)) { - for (var i = 0; i < handler.length; i++) { - vm._watchers.push(createWatcher(vm, key, handler[i])); - } - } else { - vm._watchers.push(createWatcher(vm, key, handler)); } } } - - function createWatcher (vm, keyOrFn, cb, options) { - if (BI.isPlainObject(cb)) { - options = cb; - cb = cb.handler; - } - options = options || {}; - return Fix.watch(vm.model, keyOrFn, _.bind(cb, vm), BI.extend(options, { - store: vm.store - })); - } }()); diff --git a/examples/demo.worker.js b/examples/demo.worker.js index fecbf994e..dae3c723a 100644 --- a/examples/demo.worker.js +++ b/examples/demo.worker.js @@ -1,6 +1,6 @@ if (this.importScripts) { - importScripts("../dist/fineui_without_jquery_polyfill.js"); - BI.initWorker(); + importScripts("https://fanruan.design/fineui/fineui_without_jquery_polyfill.js"); + BI.useInWorker(); } var Model = BI.inherit(Fix.Model, { state: function () { diff --git a/src/core/worker.js b/src/core/worker.js index e23d73c5d..e616ed839 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -1,5 +1,5 @@ !(function () { - BI.initWorker = function () { + BI.useInWorker = function () { function createWatcher (model, keyOrFn, cb, options) { options = options || {}; return Fix.watch(model, keyOrFn, cb, BI.extend(options, {