2011-08-25 7 views
1

에 값을 반환하고 몇 시간 동안 이걸로 돌아 다니며 내 머리카락을 꺼내 ​​왔습니다. var b를 myFunction에서 반환하여 var b로 설정 한 다음 경고 메시지에 b 값을 표시하려면 어떻게해야합니까? 감사! :)GreaseMonkey : GM_xmlhttpRequest가 호출 함수

function myFunction(arg) 
{ 
var a; 

GM_xmlhttpRequest({ 
    method:"GET", 
    url:"http://site.com/arg?" + arg, 
    headers:{ 
    "User-Agent":"monkeyagent", 
    "Accept":"text/monkey,text/xml", 
    }, 
    onload:function(details) { 
    a = details.responseText; 


    } 
}); 

return a; 

} 

b = myFunction("blabla"); 
alert(b); 

시도 할 때 그냥 공백 메시지 만 반환했습니다.

답변

1

GM_xmlhttpRequest이 비동기 적으로 작동하기 때문에 a을 반환 할 수 없습니다.

myFunction이 반환 된 후에 onload 함수가 오래 실행됩니다. a으로하려는 작업은 onload 함수 내에서 호출되는 함수에서 수행해야합니다.

그리스 몽키 은 0.9.9 버전부터 동기화 모드를 지원합니다. 꼭 필요한 경우 버전 0.9.10, here의 시험판을 다운로드 할 수 있습니다.

그러나 이러한 종류의 작업을 비동기식으로 처리하는 방법을 배우는 것은 현명합니다. "정지"및 "정지"대신에 더 빠르고 반응이 빠른 UI를 얻을 수 있습니다. 모든 종류의 실제 프로그래밍 상황을 파악하는 것이 좋은 개념입니다.

+0

그래서 xmlrequest 외부에서 사용할 수 있도록 반환하는 방법은 무엇입니까? –

+0

@ 龚 元 程, 당신은 [이 질문] (http://stackoverflow.com/q/8778267/331508)와 같은 코드를 사용합니다 - 내가 마지막으로 확인한 것을 제외하고, Greasemonkey의 버그는 작동하지 않게합니다. 그렇게 코딩하지 않는 것이 좋습니다. –