2015-01-29 2 views
0

나는 Caolan의 화려한 Async.js을 사용하고 있습니다. 나는 일련의 기능을 수행 중이다. 기능에서 하나 개의 조건이 충족되지 않을 경우Async.js가 시리즈에서 벗어납니다.

async.series([ 
    function one (next) { 
     if(!condition) { 
      // skip all the other functions and go to final callback 
     } 
     // do stuff 
     return next(); 
    }, 
    function two (next) { 
     // do stuff 
     return next(); 
    }, 
    function three (next) { 
     // do stuff 
     return next(); 
    } 
], function (err) { 
    // final callback stuff 
}); 

것은 그래서 직접 이동 : 첫 번째 함수에서, 나는 시리즈의 모든 기능 나머지를 건너 뛰고 직접 최종 콜백으로 이동해야하는 조건이 최종 콜백.

Async series docs 상태

시리즈의 모든 기능이 콜백에 오류를 전달하면, 더 이상 기능을 실행하고, 콜백이 즉시 오류의 값이라고합니다.

그러나 오류를 던지는 것은 나에게 깨끗한 접근 방식이 아닙니다. 최종 콜백에서 "실제"오류를 올바르게 처리하려면 가짜 오류를 도입해야합니다 ... 다른 방법이 있습니까?

답변

0

내가 어떻게이 문제를 해결 했는가? 이 구성되는 방식 async.series 인 경우

async.series([ 
     function one (next) { 
      if(!condition) { 
       return next('condition_not_met'); 
      } 
      return next(); 
     }, 
     function two (next) { 
      // this isn't executed if condition isn't met in function one 
      return next(); 
     } 
    ], function (err) { 
     if (err && err !== 'condition_not_met') { 
      // general error handling 
     } 
     // do more stuff 
    }); 

나는 여전히 관심이있을 것입니다 : 내가 마지막 콜백에서 일반적으로 오류 처리에서이 특정 오류를 제외하고, 시리즈의 나머지를 건너 특정 오류가 발생 할 - 또는 내 시나리오를 다루는 좀 더 우아한 방법이있는 경우. 건배.

관련 문제