2017-04-17 3 views
1

일부 파일이 백엔드에서 작성 중입니다 (최대 1 분). 파일이 준비되어 있는지 확인하기 위해 함수를 작성했습니다.대기 중, 파일 준비 중

function check_for_file() { 
    $.ajax({ 
    url: '/check/', // check if file exists 
    success: function(data) { 
     location.replace('/hello/'); // redirect to download 
     return true; 
    }, 
    failure: function(data) { 
     alert('Got an error'); 
    } 
    }); 
    return false 
} 

a = check_for_file(); 
} 
// a= false 
// while (a == false) { 
//  a = check_for_file(); 
// } 

console.log(a); 

잘 작동합니다. 하지만 파일이 준비되지 않은 동안 검사 할 루프를 만들어야합니다. 어떻게해야합니까?

!!!!!!!! 대답에 대한 첫 번째 의견을보십시오.

+1

'A = check_for_file(); '즉시 반환됩니다. 비동기를 실행하고 결과를 리턴 할 수 없습니다. afgain 함수를 호출합니다. 테스트 파일이 setTimeout을 사용하여 준비되지 않은 상태에서 호출됩니다. 성공/완료 또는 실패 표시 방법에 따라 실패 - 실패는 이벤트가 아니며 실패 또는 오류라고합니다. – mplungjan

답변

1

a = check_for_file(); 즉시 반환됩니다.

비동기를 실행하고 결과를 반환 할 수 없습니다.

failure

는 방법으로 이벤트 아니다 - 그것은 오류/테스트 파일이 성공에의 setTimeout을 사용 준비가되지 후 실패하거나 수행/완료,

전화 성공을 afgain 기능 실패라고 또는 오류입니다 또는 당신이 통과 방법에 따라 실패 "아직 파일을 찾을 수 없습니다"

function check_for_file() { 
    $.ajax({ 
    url: '/check/', // check if file exists 
    success: function(data) { 
     if (data.fileExists) { // result from server 
     location.replace('/hello/'); // redirect to download 
     } 
     else { 
     setTimeout(check_for_file,2000); // try again 
     } 
    }, 
    error: function(data) { 
     alert('Got an error'); 
    } 
    }); 
}