2016-11-05 4 views
-1

나는 매우 간단한 질문을하지만, 내 머리 위로이 문제를 어떻게 다뤄야할까요? 이 콜백 함수를 값을 캡처하는 데 필요한이 API를 사용하고 있었고, 나는 내 프로젝트에서 사용하고있는 다른 함수에 함수의 출력을 반환하는 데 문제가 있습니다. 예를 들어콜백 함수와 관련된 문제

:

function a() { 
var callback = function(e) { 
    var id = e.data.responseData.Id; 
}; 
Api.getId(callback);  
} 

내가 변수 ID를 호출하려고하면, 그것은 그래서는 id 값은 전 세계적으로 사용할 수 전달되지 않는 있으리라 믿고있어 나 정의되지 않은 줄 것이다. 다른 측면에서

내가 이렇게 뭔가를 실행하는 경우 :

function a() { 
    var callback = function(e) { 
     var id = e.data.responseData.Id; 
     console.log(id); 
    }; 
    Api.getId(callback);  
    } 

제대로 콘솔 ID의 값에 나를 돌아갑니다.

내가 여기에없는 것에 대한 아이디어가 있습니까?

다시 한번 감사드립니다.

라파

+0

귀하의 질문이 충분히 명확하지 않습니다. 코드 예제 전체에 return 문이 없습니다. 어떤 함수가 무엇을 반환해야합니까? – vinit

+0

id 값을 반환한다고 가정합니다. "return id"를 추가하려했지만 작동하지 않았습니다. 본질적으로 그 범위 밖의 다른 기능에 ID를 사용하고 싶습니다. – Rafa

+0

비동기 적으로 값을 반환 할 수 없습니다. 다른 함수에서'id'를 사용해야한다면'id'를 인자로 넘겨 콜백 함수에서 그 함수를 호출하십시오. 예제 -'var callback = function() {id = getId(); foo (id);}' – vinit

답변

0

당신은 함수에서 변수 "ID"를 반환해야합니다

function a() { 
var callback = function(e) { 
    var id = e.data.responseData.Id; 
    return id; 
}; 
Api.getId(callback);  
} 
+0

나는 노력했지만 여전히 나에게 null을주고 있었다. – Rafa

+0

콜백이 호출되는 곳의'Api' 함수 안에'id'를 반환합니다. 따라서, 값'id'는 함수 a()에서 사용할 수 없습니다. – vinit

+0

네, 맞습니다, 그리고 Api.getId (callback)이어야합니다; 반환뿐만 아니라 :) – niklaz

관련 문제