let ObjectNames let Values let Dir let ModelRotateWorker let AnimObjectArray let ModelMotionAttributeWorker let RotationValue let RotateSpeed let Direction = 1 onmessage = function (e) { ObjectNames = e.data.ObjectNames Values = e.data.Values Dir = e.data.Dir ModelRotateWorker = e.data.ModelRotateWorker RotationValue = e.data.RotationValue RotateSpeed = e.data.RotateSpeed modelRotationWorker(e.data.ObjectNames, e.data.Dir, e.data.Values, e.data.RotationValue) } function modelRotationWorker(objectNames, Dir, Values, rotationValue) { let m = ModelRotateWorker Dir = parseInt(Dir) if (m.state === Dir) return if (Dir === 0) { m.doAnimation = false m.state = 0 self.close(); clearInterval(m.myVarSetInterval) } else { clearInterval(m.myVarSetInterval) m.state = Dir if (Dir === 1) { Direction = Values / Math.abs(Values) m.doAnimation = true m.myVarSetInterval = setInterval(()=> { if(m.state === 1){ rotationValue += RotateSpeed * Direction self.postMessage({ objectNames: objectNames, rotation: rotationValue }) } else { clearInterval(m.myVarSetInterval) // Worker 线程结束 self.close(); m.doAnimation = false } },500 / (3 * Math.abs(Values))) } } }