2012-09-03 4 views
0

'도청'을 기록하고 HUD를 최대한 빨리 실행하고 싶지만 oauth_upload_photo가 지연되고 있습니다 (호이스트로 인해). HUD를 즉시 스냅하는 방법은 무엇입니까 ??호이스트로 인한 지체 회피

var submit_post = function submit_post(){ 

    console.log('tapped'); 

    // Show HUD 
    plugins.navigationBar.hideRightButton(); 
    var hud = document.getElementById("hud"); 
    hud.style.display = 'block';  

    // Get the image 
    var image = document.getElementById('myImage'); 
    var imageURI = image.src; 

    // Get the caption from the textarea 
    var cap = document.getElementById('tar'); 
    var caption = cap.value; 

    // Call upload photo 
    oauth_upload_photo(imageURI,caption); 

}; 
+1

호이 스팅과 어떤 관련이 있습니까? "후행"이란 정확히 무엇입니까? –

+1

이것은 호출 된 것이 아니라 호출 된 함수의 선언입니다. 호이스트에 대해 더 자세히 읽어보십시오. 지연은 대부분 다른 GUI 작업으로 이어질 가능성이 큽니다 (예를 들어 어떤 것도 표시되지 않음). – Matt

+0

oauth_upload_photo를 주석 처리하면 '탭핑'이 즉시 기록됩니다. 내가하지 않으면 '탭핑'이 기록되기 전에 1-2 초의 지연이 있습니다. oauth_upload_photo는 비교적 복잡하다. (바이너리 이미지 변환) – ggwarpig

답변

1

사용자가 실제로 묻는 것을 이해하기 전에 더 많은 설명이 필요합니다. 자바 스크립트 변수 호이닝과는 아무런 관련이 없습니다. 모든 호이 스팅은 함수의 초기 선언이 함수에있는 위치와 상관없이 함수의 맨 위에 정의되는 원인 변수입니다. 모든 명령문의 실행 순서는 변경되지 않습니다.

또한 일부 브라우저에서는 console.log()이 완전히 동기가 보장되지 않으며 로그 창의 데이터 표시가 반드시 즉각적인 것은 아닙니다. 실제로 기록하기 전에 지연되는 경우가 있습니다. 이것이 프로세스 경계, 일반적인 그리기 논리 또는 다른 내부 구현 문제에서 데이터를 정렬함으로써 발생하는지 알 수 없습니다. 그래서 당신은 같은 기호를 정의하는 두 배로되지 않습니다

function submit_post() { 

:

var submit_post = function(){ 

또는이 : 이것에

var submit_post = function submit_post(){ 

:

당신은이를 변경할 수 있습니다 .

+0

FWIW, "double define"은 IE <9에서 문제가 될 것입니다; 다른 것들은 오류를 디버깅하려고 할 때 호출 스택에 "익명의 기능"을 가지지 않는 이점을 누릴 수 있습니다 : P. – Matt

+0

@Matt - 왜 변수 할당이 아닌 일반 함수 정의를 사용합니까? – jfriend00

+0

'@'jfriend00 : 그게 내가 생각하기에 가장 좋은 해결책이 될거야. :). 나는 대안을 제안하기보다는 문장을 명확히하는 것을 의미했다. – Matt