gpt4 book ai didi

javascript - 正确尝试Cesium创建、错误捕获、跨浏览器兼容性和开发人员错误

转载 作者:行者123 更新时间:2023-11-28 00:17:54 24 4
gpt4 key购买 nike

我目前正在开发一个 GIS 项目,该项目必须是跨浏览器、移动、多平台和无所不能的。Cesium 在没有 WebGL 的情况下无法工作,在一些较旧的浏览器和其他小异常(exception)中,但我必须捕获它们。当 Cesium 无法成为一种选择时,我决定切换到 OpenLayers,OL 几乎在所有方面都可以很好地工作。至于现在,我对新的 Cesium.Viewer 有一个 try catch,并且 catch 启动了 OpenLayers,直到最近我开始收到 Cesium“内存不足”错误时,它都运行得很好。

关于开发者错误的 Cesium 文档表示:永远不应该被捕获;相反,调用代码应该努力不生成它。那么如何解决这个问题呢?有没有可靠的方法来检查Cesium是否会正常启动,或者我是否必须 try catch 我调用的每个方法以确保它不会崩溃?

最佳答案

当然,new Cesium.Viewer(...) 应该包装在 try/catch 中,因为如果无法初始化 WebGL,它将抛出 Cesium.RuntimeError。另外,viewer.scene 有一个 renderError当渲染循环内发生错误时引发的事件(因为正常/自动渲染循环不能包装在 try/catch 中)。

但是,当然,如果浏览器内存即将耗尽,任何在浏览器上分配内存的调用都可能会失败。遗憾的是,JavaScript 中似乎没有对此有太多警告。 Cesium 已经被很好地清理,以便在渲染时不分配内存(重新使用带有 result 参数的暂存变量等),但某些操作(例如放大高分辨率地形)必然会分配一些内存。添加实体和新的图形基元等内容将分配内存。您可能希望在向 View 添加新对象时进行 try/catch。

另请查看viewerPerformanceWatchdogMixin .

关于javascript - 正确尝试Cesium创建、错误捕获、跨浏览器兼容性和开发人员错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30298982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com