为什么静态地图在未来的方法中不保留价值?

Why static map does not retain the value in future methods?

我已经将地图声明为实例变量,如下所示:

public class JSONParser_GET {
     public static Map<String, String> mapOfValues= new Map<String,String>();
 ...

现在,我有一个未来的方法,可以将值添加到此地图:

@future(callout=true)
public static void getRequest(String type,String e,String authHeader){
    mapOfValues.put(type,lookupname);
    ...

但是当我尝试以不同的方法访问它时,这些值不可用。这不是 static 应该做的吗? 正如我将其声明为静态实例变量一样,它应该是全局可用的。我也尝试使用 global 关键字。但这似乎也行不通。 感谢任何帮助

我认为,这与 Future annotation 有关。这意味着方法 getRequest() 将异步执行,而不是与所有常用方法一起执行。

所以,这就是我所做的.. 似乎未来的方法可能会并行执行,因此无法从一个 Map 本身的响应中获取值。 所以我在 getRequest 之前写了一个方法并将其作为未来,这样我就可以只创建一个未来处理程序的实例。

@future(callout==true) public class JSONParser_GET { public static Map<String, String> mapOfValues= new Map<String,String>(); getRequest() getRequest() getRequest() }

public void getRequest{...}