2010-02-26 5 views
3

나는 정말 특이한 경우가 있습니다. return 일부 데이터 - 아약스를 통해 다운로드 한 데이터. 지금까지 비동기식 & 동기화 모드는 시간상 데이터를 return으로 가져 오지 않습니다. 부모 함수에 대해 자식 함수에서 return으로 호출하거나 시간 제한으로 문제를 해결할 수 있습니까? 이 작업을 수행하는 또 다른 방법은 생각할 수 없지만 데이터를 반환해야합니다.javascript의 하위 함수에서 부모 함수의 Return을 호출하는 방법이 있습니까?

+0

반품은 * NOT * 기능입니다! 아마 예외를 제기하면 원하는 것을 할 수 있을까요? – Ponkadoodle

+0

예외가'return'처럼 배열을 반환 할 수있는 방법이 있습니까? –

+0

아마도 jQuery를 사용하고 있다고 함수에서 알리는 것이 적절했을까요? – zneak

답변

2

대답은 '아니오 :

-1

XMLHttpRequest.open의 세 번째 매개 변수로 false을 전달하기 만하면됩니다. "이 쿼리를 동 기적으로 실행"을 의미합니다.

See the reference. 귀하의 질문에

function parentfunction(callback) { 
    callback(getAjax()); 
} 

function childfunction() { 
    parentfunction(function(ajaxData) { 
     //Do stuff with data 
    }); 
} 
+0

'$ .ajaxSetup ({ async : false })'이 나를 위해 작동한다면, 내 모든 문제를 해결 하겠지만 내 코드는 그것을 무시하는 것 같다. –

+0

"Gecko 30.0 (Firefox 30.0/Thunderbird 30.0/SeaMonkey 2.27)부터 사용자 경험에 부정적인 영향을 주 스레드의 동기 요청은 사용되지 않습니다." –

3

당신은 콜백 함수를 제공 할 수 있습니다.

비동기 요청에서 함수는 결과를 얻기 전에 반환해야합니다. 이 문제를 해결하기 위해 콜백 패턴이 사용됩니다. 이러한 함수를 호출 할 때는 반환을 기대하지 않고 콜백을 제공합니다. 결과를 사용할 수있게되면 호출 할 수있는 함수입니다. 여기

var someValue; 
fetchValueFrom('http://example.com/some/url/with/value', function(val) { 
    someValue = val; 
    doSomethingElseWith(someValue); 
}); 

우리는 함수를 생성하고 fetchValueFrom 호출 제 PARAM로의 전달 :

여기 간단한 예이다. 값을 사용할 수있게되면이 함수가 호출되고 변수를 설정하고 다른 함수를 호출하여 실행을 계속합니다.

+0

+1 콜백은 이러한 비동기식 시나리오를 수행하는 방법입니다. –

관련 문제