2013-01-20 5 views
1

누구나 여러 비동기 요청을 처리하는 방법을 찾을 수있는 훌륭한 자료 나 책을 알고 있습니까? 여러 비동기 요청을 올바르게 처리하는 방법은 무엇입니까?

이의 아래 코드를 살펴 보자 :

Payment.createToken = function(data) { 
    var data = data; 

    apiCall("POST", "api/createToken", data, function(success, response) { 
     if (success) { 
      data.token = response.id; 

      // If there's coupon code passed in data object, check it's validity, else send payment request 
      if (data.coupon) { 
       // Check if coupon is valid 
       Payment.verifyCoupon(data); 
      } else { 
       // Send payment request 
       Payment.chargePlan(data); 
      } 
     } else { 
      // Handle error 
     } 
    }); 
}; 

Payment.verifyCoupon = function(data) { 
    var data = data; 

    apiCall("POST", "/api/checkCoupon", data, function(success, response) { 
     if (success) { 
      Payment.chargePlan(data); 
     } else { 
      // Handle error 
     } 
    }); 
}; 

Payment.chargePlan = function(data) { 
    apiCall("POST", "/api/chargePlan", data, function(success, response) { 
     if (success) { 
      Payment.changeUserType(data); 
     } else { 
      // Handle error 
     } 
    }); 
}; 

Payment.changeUserType = function(data, response) { 
    apiCall("PUT", "api/users/", data, function(success, response) { 
     if (success) { 
      // User type changed successfully 
     } else { 
      // Handle error 
     } 
    }); 
}; 

당신이 볼 수 있듯이, 그것은 오래이다, 4 단계 흐름. 오류 등을 어떻게 올바르게 처리해야합니까? 이러한 호출은 최대한 재사용 가능해야한다는 점을 고려해 봅시다.

+0

[Promises] (http://wiki.commonjs.org/wiki/Promises)를 사용하십시오. – Bergi

답변

0

나는 성공적으로 this library을 사용했습니다. 혼란을 줄이고 여러 프로세스를 순서대로 또는 동시에 실행할 수있는 옵션을 제공합니다 (모든 작업이 실제로 완료된 시점을 추적합니다).

그리고 뭔가 잘못되었는지 알아야 할 경우 선택적 오류 처리 콜백에 대한 참조가 필요합니다.

나는 그것이 당신이 찾고있는 정확한 답변이 아니라는 것을 알고 있습니다. 그럼에도 불구하고 도움이 될 것입니다.

0

그런 경우 대개 비동기 작업 대기열을 만들어 일련의 작업을 수행하고 이전 작업이 성공한 경우에만 다음 작업을 호출합니다. 그렇지 않으면 최종 콜백이 다음 오류로 직접 호출됩니다. 첫 번째 인수.

관련 문제