为什么静态地图在未来的方法中不保留价值?
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{...}
我已经将地图声明为实例变量,如下所示:
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{...}