2017-12-21 23 views
1

for-loop를 사용하여 정적 웹 응용 프로그램에 이미지를로드하려고합니다. 로컬 서버를 실행하기 위해 nodejs http-server를 실행 중입니다.오류 처리와 함께 루프를 사용하여 로컬 폴더에서 이미지로드

아래 코드는 작동하지 않고 정의되지 않은 상태로 반환됩니다. 누구든지 문제를 지적 할 수 있습니까? 또한이 웹 응용 프로그램은 클라이언트 컴퓨터에서 실행됩니다.

이미지 파일 경로가 유효하지 않거나 이미지를 찾을 수없는 경우 기본값으로 설정해야합니다.

내 코드는 $ 갔지()없이이 작업을 수행하는 다른 방법이 있나요이

for(let i=0;i<16;i++){ 
    let img_src = validatePath('img/music/',i,'.svg'); 
    $('img').attr(src,img_src); 
} 

function validatePath(folder, fileindex, extention) { 
    let finalPath = ""; 
    let path = folder + fileindex + extention; 
    $.get(path) 
     .done(function(data) { 
      finaPath = path; 
     }).fail(function(error) { 
      finaPath = "img/default.svg"; 
     }); 
    return finalPath ; 
} 

입니까? @Kattath의 의견에 확장

답변

1

이 시도하고 일했다. 이 방법은 파일 경로를 찾을 수있는 경우 기본 경로를 찾을 수 없으면 찾을 수 ...

function validatePath(folder, fileindex, extension) { 
    let path = folder + fileindex + extension; 
    let finalPath = ""; 
    var http = new XMLHttpRequest(); 
    http.open('HEAD', path, false); 
    http.send(); 
    if (http.status != 404) finalPath = path; 
    else finalPath = "img/default.svg" 
    return finalPath; 
} 
0

, 코드가 더 좋아 보일 것입니다 :

for(let i=0;i<16;i++){ 
    validatePath('img/music/',i,'.svg', function(img_src) { 
     $('img').attr(src, img_src); 
    }); 
} 

function validatePath(folder, fileindex, extension, callback) { 
    let path = folder + fileindex + extension; 
    $.get(path) 
     .done(function(data) { 
      callback(path); 
     }).fail(function(error) { 
      callback("img/default.svg"); 
     }); 
} 
+0

답장을 보내 주셔서 감사합니다. 당신은 는'=에 ValidatePath img_src하게 사용하는 방법을 말해 줄래 (, 난 '을 IMG/음악 /' 'SVG를.');' 를 ---> 대신> ---의 '에 ValidatePath ('IMG ' $ ('img '). attr (src, img_src);}' 과 같은 것'let img_src = validatePath ('img/music/'012,'svg ', function (img_src) { return img_src; }' – Greyfrog

+0

아니요, @Greyfrog.이 작업을 수행하는 좋은 방법은 없습니다 (이 주석에 쓴 내용도 효과가 없습니다). 근본적으로 비동기식 작업에서 동기식 작업을 수행하게됩니다. 위의 Kattath의 의견에서 링크 된 답변을 읽어보십시오. –