2012-06-19 6 views
0

사람이 좋아하는 것처럼 (그러나 그의 솔루션은 nother 함수를 호출 할 때) https://stackoverflow.com/a/10796326/315200 ... 그 응답이 두 번째 함수를 호출하지 않는 함수를 가질 수 있는지 알고 싶습니다. 비동기 요청이지만, 비동기 요청이 응답하면 간단히 return입니다. 어쩌면이 같은함수가 비동기 응답을 반환합니다.

뭔가 :

function callToFacebook() { 
    var fbResponse; 

    FB.api('/me', function (response) { 
     fbResponse = response; 
    }); 

    return fbResponse; //Will return undefined because CallToFacebook is async 
} 

다른 함수를 호출하지 않고, 그 수있는 방법 아닌가요?

내가 얻으려고하는 것은 FB와 같은 비동기 웹 서비스에서 object 응답을 반환하는 일부 매개 변수를 호출 할 수있는 하나의 함수를 갖는 것입니다.

+3

가능한 경우 답변으로 대신 표시됩니다. –

+0

@FelixKling. LOL. – gdoron

답변

2

간단히 말해서, 비동기 함수는 의미있는 값을 동 기적으로 반환 할 수 없습니다. 그 값은 그 시점에 존재하지 않기 때문입니다 (백그라운드에서 비동기 적으로 작성되므로).

그러나 비동기 작업의 "잠재적 인 반환 값"을 나타내는 Promise 개체를 반환하고 done() 또는 그 유사 물을 사용하여 해당 개체에 함수를 바인딩 할 수 있습니다. 그런 식으로, 당신의 함수는 콜백으로 제어 흐름을 연결하는 대신 return 의미를 얻고 비동기 상태를 유지합니다.

+1

당신은 jsfiddle plz에서 이것을 보여줄 수 있습니까? –

2

아니요, 불가능합니다.

비동기 작업에서 반환 된 값을 반환 할 수 없습니다.

생각해 보면 10 명이 1 마일 달리기 경주를하고 있다고 말하면 1 분 안에 끝날 것입니다. + 대답을 알고 싶습니다. 이니, 속임수를 쓰지 않으면 불가능합니다. ...

+0

나는 응답을 기다리고 추측하거나 속이기를 기다리는 기능을 원한다. –

+1

@KennethB. 그래서 대답은 불가능합니다, – gdoron

관련 문제