2013-07-25 3 views
2

async의 각 함수를 사용하여 abc 함수를 호출하려고하는데 몇 가지 문제가 있습니다. 코드는 다음과 같습니다.async each and foreach functions

  1. 나는 각 기능을 사용하려고 할 때, ABC 방송 기능의 URL로 전달되는 URL이 배열 대신 문자열의 형태로되어 있기 때문에 여기에 for 루프가 사용하고 이유. 그래서 for 루프를 추가하지 않고이 문제를 해결할 다른 방법이 있는지 궁금합니다.

  2. 몇 가지 print 문을 추가 한 후 어떤 이유로 코드가 http.get (url [a], newFileLoc, function (error, result) {를 통과하지 못한다는 사실을 깨달았습니다. 각각의 (urls, function() { TypeError : Object #에는 'each'메서드가 없습니다. "

  3. 그래서 내 진짜 질문은 정확히 코드에 어떤 문제가있는 것 같습니까? forEach 각각의 대신에 또 다른 오류가있었습니다. "iterator (x, function (err) { TypeError : 정의되지 않은 함수는 함수가 아닙니다."

누군가 제발 도와주세요!

var abc = function (url, cb) { 
    for (var a = 0; a < url.length; a++){ 
    var index = url[a].lastIndexOf("/") + 1; 
    var filename = url[a].substr(index); 
    var newFileLoc = "./tmp/" + filename; 
    http.get(url[a], newFileLoc, function (error, result) { 
     if (error) { 
     console.error(error); 
     } else { 
     cb(); 
     } 
    }); 
    } 
} 
var urls = ["www.randomurl.random.random/", "www.randomurl.random.random/"]; 

async.each(urls, abc(urls, function(){ 
    console.log('downloaded' + results); 
}), function(err){  
    if(err){ 
    console.log(err); 
    } 
}); 
+0

'각'에 전달하지 않으면 어떻게'abc'가 호출 될 수 있습니까? – Dan455

+0

죄송합니다, 이것은 실수였습니다. 수정되었습니다! – jensiepoo

+0

그럼'var async = require ('async')'를했을까요? –

답변

0

each의 서명은 each(arr, iterator, callback)이지만, iterator 장소에 직접 abc를 호출하고 함수를 반환하지 않습니다.

async.each(
    urls, 
    abc, 
    function(err) { 
     if(err){ 
      console.log(err); 
     }; 
    } 
); 

는 또한 console.log를 호출하려고하면 IE9을 유발한다는 및 스크립트를 충돌까지주의 :에

그 문제의 수정 리드.

... 및 은 들여 쓰기를 정리하십시오. 열기 및 닫기 중괄호가 하나의 참모 (JavaScript)에 공통적 인 스타일을 따르지 않을 때 코드를 읽는 것은 매우 어렵습니다.

+1

코드 스 니펫은 분명 node.js 전용이므로'console.log'는 문제가되지 않습니다. –