工作脚本中的preloadIcrfFixed承诺无法解决

我寻求您的帮助!

我需要在铯中的ITRF和GCRF之间执行参考帧转换。

我想在主线程声明的专用工作程序脚本中执行此操作。

通过以下操作,我已经能够在主脚本中执行此转换:

let loadDataPromise = Cesium.Transforms.preloadIcrfFixed(timeInterval);

loadDataPromise.then(function(){
console.log("Data is Loaded");
//Do the rest in here
})

.. so,我知道我正在以这种方式做正确的事(我认为!)

现在,对于要在worker脚本中执行的相同操作,我已经导入了使用Webpack进行构建所需的特定Cesium模块。我想最小化整个应用程序中对铯资源的使用。我正在工作脚本中执行其他转换,没有任何问题,但是由于上述代码的要求以及我对Promises的了解还不够,ITRF / GCRF的转换让我头疼。

将以上代码放在工作脚本中时,它将永远无法在控制台中打印消息“数据已加载”。看来我的功能永远无法运行,并且挂起了控制台。

我应该遵循什么方法来实现上述承诺,从而在工作人员中正确实现?恐怕我的问题更多是与Javascript知识有关,而不是Cesium。

我调用工作程序的主脚本:

console.log('Main START');
w = new Worker('worker.js');
w.postMessage(0)

我的工人脚本没有实现承诺

import JulianDate from 'cesium/core/JulianDate.js';
import TimeInterval from 'cesium/core/TimeInterval.js';
import Transforms from 'cesium/core/Transforms.js';

var timestamp = new JulianDate.now();
var timeJDstart = new JulianDate();
var timeJDstop = new JulianDate();

JulianDate.addSeconds(timestamp,-1,timeJDstart);

JulianDate.addSeconds(timestamp,1,timeJDstop);

let now = new Date();
var timeInterval = new TimeInterval({
  start           : JulianDate.fromDate(now),stop            : JulianDate.fromDate(new Date(now.getTime()+3*1000)),isStartIncluded : true,isStopIncluded  : true
});
console.log("Work started")

let promiser = new Transforms.preloadIcrfFixed(timeInterval);
console.log(promiser);

// The code below never fulfills?
promiser.then(function(){
  onmessage = function(e){
    console.log("Promise Resolved,Worker ready to continue");
  }
});

任何帮助将不胜感激!谢谢! 曼尼

hbsogua 回答:工作脚本中的preloadIcrfFixed承诺无法解决

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2929922.html

大家都在问