2015-02-04 5 views
-1

ExpressJS를 사용하여 첫 번째 노드 응용 프로그램을 만들고 요청 및 비동기를 사용하여 여러 URL을 요청하는 방법을 혼동합니다. 아래 코드에서 "chart1이 정의되지 않았습니다."라는 오류가 발생합니다.비동기로 여러 URL 요청

router.get('/', function(req, res) { 
    async.parallel([ 
    function(next) { 
     apiRequestGoesHere(chart1, function(error) { 
      request.get('http://203.33.33.44:8080/reports/43?type=0&key=fakekey'), 
      next(null, firstData); 
     }); 
    }, 
    function(next) { 
     anotherApiRequest(chart2, function(error) { 
      request.get('http://203.33.33.44:8080/reports/42?type=0&key=fakekey'), 
      next(null, secondData); 
     }); 
    }], 

    function(err, results, firstData, secondData) { 
     // results is [firstData, secondData] 
     res.render('index', { 
      title: 'Home KP', 
      firstData: chart1 
     }); 
    }); 
}); 

누군가 이러한 질문을 정의하고 작동하는 방법을 설명해 주실 수 있습니까?

+0

음,이 코드는 'chart1' 또는'chart2'를 정의하지 않습니다. 정의 된 위치는 어디입니까? 나는 이것이 ExpressJS와 관련이 없다고 생각합니다. 변수를 정의하지 않았거나이 컨텍스트에서 액세스 할 수 없습니다. –

답변

0

콜백이 chart1을 정의하지 않습니다. results[0]을 확인하고 싶으십니까?

async.parallel을 사용하면 results 변수에는 모든 함수의 결과가 같은 순서로 포함됩니다. next(null, firstData)을 호출하면 값을 results 배열에 넣으라는 비동기 메시지가 표시되고 해당 기능이 처음이므로 results[0] (다음은 results[1] 등)으로 이동합니다.