From d74b495736f0c04522ec54274b70fed0ded2878d Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Tue, 27 Jun 2023 11:30:06 +0800
Subject: [PATCH] 任务新增导出

---
 public/libs/Cesium/Workers/createTaskProcessorWorker.js |  145 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 145 insertions(+), 0 deletions(-)

diff --git a/public/libs/Cesium/Workers/createTaskProcessorWorker.js b/public/libs/Cesium/Workers/createTaskProcessorWorker.js
new file mode 100644
index 0000000..a1218e9
--- /dev/null
+++ b/public/libs/Cesium/Workers/createTaskProcessorWorker.js
@@ -0,0 +1,145 @@
+/**
+ * Cesium - https://github.com/CesiumGS/cesium
+ *
+ * Copyright 2011-2020 Cesium Contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Columbus View (Pat. Pend.)
+ *
+ * Portions licensed separately.
+ * See https://github.com/CesiumGS/cesium/blob/master/LICENSE.md for full licensing details.
+ */
+define(['./when-8d13db60'], function (when) { 'use strict';
+
+    /**
+         * Formats an error object into a String.  If available, uses name, message, and stack
+         * properties, otherwise, falls back on toString().
+         *
+         * @exports formatError
+         *
+         * @param {*} object The item to find in the array.
+         * @returns {String} A string containing the formatted error.
+         */
+        function formatError(object) {
+            var result;
+
+            var name = object.name;
+            var message = object.message;
+            if (when.defined(name) && when.defined(message)) {
+                result = name + ': ' + message;
+            } else {
+                result = object.toString();
+            }
+
+            var stack = object.stack;
+            if (when.defined(stack)) {
+                result += '\n' + stack;
+            }
+
+            return result;
+        }
+
+    // createXXXGeometry functions may return Geometry or a Promise that resolves to Geometry
+        // if the function requires access to ApproximateTerrainHeights.
+        // For fully synchronous functions, just wrapping the function call in a `when` Promise doesn't
+        // handle errors correctly, hence try-catch
+        function callAndWrap(workerFunction, parameters, transferableObjects) {
+            var resultOrPromise;
+            try {
+                resultOrPromise = workerFunction(parameters, transferableObjects);
+                return resultOrPromise; // errors handled by Promise
+            } catch (e) {
+                return when.when.reject(e);
+            }
+        }
+
+        /**
+         * Creates an adapter function to allow a calculation function to operate as a Web Worker,
+         * paired with TaskProcessor, to receive tasks and return results.
+         *
+         * @exports createTaskProcessorWorker
+         *
+         * @param {createTaskProcessorWorker~WorkerFunction} workerFunction The calculation function,
+         *        which takes parameters and returns a result.
+         * @returns {createTaskProcessorWorker~TaskProcessorWorkerFunction} A function that adapts the
+         *          calculation function to work as a Web Worker onmessage listener with TaskProcessor.
+         *
+         *
+         * @example
+         * function doCalculation(parameters, transferableObjects) {
+         *   // calculate some result using the inputs in parameters
+         *   return result;
+         * }
+         *
+         * return Cesium.createTaskProcessorWorker(doCalculation);
+         * // the resulting function is compatible with TaskProcessor
+         *
+         * @see TaskProcessor
+         * @see {@link http://www.w3.org/TR/workers/|Web Workers}
+         * @see {@link http://www.w3.org/TR/html5/common-dom-interfaces.html#transferable-objects|Transferable objects}
+         */
+        function createTaskProcessorWorker(workerFunction) {
+            var postMessage;
+
+            return function(event) {
+                var data = event.data;
+
+                var transferableObjects = [];
+                var responseMessage = {
+                    id : data.id,
+                    result : undefined,
+                    error : undefined
+                };
+
+                return when.when(callAndWrap(workerFunction, data.parameters, transferableObjects))
+                    .then(function(result) {
+                        responseMessage.result = result;
+                    })
+                    .otherwise(function(e) {
+                        if (e instanceof Error) {
+                            // Errors can't be posted in a message, copy the properties
+                            responseMessage.error = {
+                                name : e.name,
+                                message : e.message,
+                                stack : e.stack
+                            };
+                        } else {
+                            responseMessage.error = e;
+                        }
+                    })
+                    .always(function() {
+                        if (!when.defined(postMessage)) {
+                            postMessage = when.defaultValue(self.webkitPostMessage, self.postMessage);
+                        }
+
+                        if (!data.canTransferArrayBuffer) {
+                            transferableObjects.length = 0;
+                        }
+
+                        try {
+                            postMessage(responseMessage, transferableObjects);
+                        } catch (e) {
+                            // something went wrong trying to post the message, post a simpler
+                            // error that we can be sure will be cloneable
+                            responseMessage.result = undefined;
+                            responseMessage.error = 'postMessage failed with error: ' + formatError(e) + '\n  with responseMessage: ' + JSON.stringify(responseMessage);
+                            postMessage(responseMessage);
+                        }
+                    });
+            };
+        }
+
+    return createTaskProcessorWorker;
+
+});

--
Gitblit v1.9.3