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

时间:2016-09-06 21:45:55

标签: rest static salesforce apex force.com

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

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);
    ...

但是当我尝试以不同的方法访问它时,这些值不可用。那不就是静态应该做的吗? 当我将其声明为静态实例变量时,它应该是全局可用的。我也尝试使用全局关键字。但这似乎也不起作用。 任何帮助表示赞赏

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

public void getRequest{...}

dim a as long, arr as variant, r as range, rng as range arr = array(2, 3) for a = lbound(arr) to ubound(arr) range("B5:H20").rows(arr(a)).entirerow.hidden = true next a set rng = range("B5:H20").specialcells(xlcelltypevisible) range("B5:H20").entirerow.hidden = false debug.print rng.address(0,0)