gpt4 book ai didi

java - 在 Java 中存储 Javascript 对象

转载 作者:行者123 更新时间:2023-11-30 18:38:27 25 4
gpt4 key购买 nike

我有一个 Java 对象,其中存在一个由“知名文本”字符串定义的空间形状。在我的 GWT UI 中将鼠标悬停在该对象上时,我的代码通过 JSNI 将此字符串传递给 Javascript,后者依次进行大量解析并创建适当的 Bing Maps API 形状。

这方面的一个简化示例是 map 应用程序,其中每个州都作为一个对象存在,其中包含州名称和定义其周界的字符串。在我的 UI 中将鼠标悬停在州名称上时,将解析周界字符串并在 map 上绘制一个具有代表性的形状。

所以现在,每次用户将鼠标悬停在我的对象上时,我的代码都会进行传递、解析和创建。我正在寻找一种方法来解析字符串并只创建一次对象,希望将完整的、已经创建的 Javascript 对象(Bing Maps 形状)存储在原始 Java 对象本身中。我认为,这肯定会加快速度 - 当用户每次将鼠标移动到不同的项目时,当它必须解析和创建几个非常详细的 map 对象时,UI 开始看起来很慢。

是否可以将这种性质的 Javascript 对象存储在我的 Java 对象中,然后在需要时将它们带回 Javascript?

在我的 Java 代码 (GWT) 中,我可以创建一个 JavascriptObject,但这是否足以容纳 Microsoft.Maps.Polygon 对象之类的东西?

谢谢!

最佳答案

为什么不直接将它们缓存在 javascript 中?在 Javascript 中创建对象后,将其存储在以字符串为键的缓存对象中。然后,每当您收到对新对象的请求时,您都会检查缓存并使用预先创建的缓存(如果有的话)。如果没有预先创建的,您可以创建它并将其添加到缓存中。

如果你想预先创建一些对象,你可以让 java 只用一堆字符串调用 javascript,它会为这些字符串预先填充缓存。这会将所有 Javascript 对象保留在栅栏的 Javascript 一侧,并将所有 Java 对象保留在它们的栅栏站点上,但仍应有助于提高性能。

这是伪代码的一般思路:

var cache = {};

function createJSObject(stringArgument) {
if (stringArgument in cache) {
return(cache[stringArgument]);
}
var obj;

// create the object here
// ...

// cache the object we created
cache[stringArgument] = obj;
return(obj);
}

关于java - 在 Java 中存储 Javascript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7541227/

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