2016-09-06 9 views
0

나는이 같은 인스턴스 변수로지도를 선언 한정적 맵이 향후 방법에서 값을 보유하지 않는 이유는 무엇입니까? 나는이지도에 값을 추가하고 미래의 방법이 지금</p> <pre><code>public class JSONParser_GET { public static Map<String, String> mapOfValues= new Map<String,String>(); ... </code></pre> <p>:

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

을하지만 값이 없습니다 다른 방법으로 액세스하려고 할 때 사용할 수 있습니다. 정적이해야 할 일이 아닌가요? 정적 인스턴스 변수로 선언하기 때문에 전역 적으로 사용할 수 있어야합니다. 나는 글로벌 키워드를 사용하려고 시도했다. 그러나 그것은 또한 작동하지 않는 것 같습니다. 도움이 필요합니다.

+1

는'@의 future'는 새로운 실행 컨텍스트를 생성합니다 그것이 어디에서 왔는지 알 수 없습니다 – EricSSH

답변

0

그래서, 여기에 내가 한 일이 있습니다 .. 미래의 방법이 하나의지도 자체의 응답에서 값을 가져올 수 없기 때문에 병렬로 실행될 수 있습니다. 그래서 getRequest 전에 메소드를 작성하고 장래의 핸들러 인스턴스를 하나만 만들 수 있도록 미래로 만들었습니다.

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

public void getRequest{...}

1

나는 그것이 Future annotation과 관련이 있다고 생각합니다. 즉, getRequest() 메서드는 모든 일반적인 메서드가 아닌 비동기 적으로 실행됩니다.