2

흐름 제어에 사용할 수있는 몇 가지 js 라이브러리가 있습니다.제어 흐름 라이브러리는 Google 폐쇄 라이브러리에서 작동하나요?

비록 closure 컴파일러로 작업 할 때 아직 보았던 것들은 고급 모드에서 컴파일러와 잘 작동하지 않습니다.

어떤 클로저 호환 흐름 제어 라이브러리가 있습니까? 나는 주로 코드를 복잡하게하지 않고 여러 결과를 기다리는 데 관심이 있습니다.

내가 보관하려는 것은 사용자 행동에 대한 로딩 시간을 줄이는 것입니다. 사용자의 한 동작에 대해 여러 요청을 백 엔드에 수행해야합니다. 코드를 유지 보수 가능하게 유지하려면 현재 한 번에 하나의 요청을 수행하고 각 단계마다 잠재적 인 오류를 처리하십시오.

내가 보관하고 싶은 것은 오류 처리를 복잡하게하지 않으면 서 비 필수적인 요청을 함께 실행할 수 있다는 것입니다.

var auth = flow.define(
    function(username, password) { 

     sys.puts("trying " + username + ", " + password); 

     this.password = password; 
     keystore.get('userId:' + username, this); 

    },function(err, userId) { 

     keystore.get('user:' + userId + ':password', this); 

    },function(err, passwordInDb) { 

     if (passwordInDb == this.password) { 
      sys.puts("Authenticated!"); 
     } 
     else { 
      sys.puts("Failed Authentication!"); 
     } 
    } 
) 

또한 여러 비동기 작업을 산란하고이를 수집 할 수 있습니다 :

나는 흐름 JS의 구문을 좋아한다. 콜백 사이에 상태가 필요한 경우 상태는 위의 "this.password"와 같이 저장됩니다. 포함 된 범위로 형식화되지 않은 클로저 컴파일러는 ADVANCED 모드에서 일관되게 (내 이해) 이름을 바꿀 수 없습니다.

그래서 나는 각 함수를 통해 매개 변수 (또는이)로 푸시 된 형식화 된 컨테이너 개체가있는 대안이 필요합니다.

+0

모양의 가치 : 당신에 대해 얘기 흐름 제어의 종류? 작동하지 않는 몇 가지 예제 흐름 제어 라이브러리를 제공 할 수 있습니까? – John

+0

thanks ... flow.js의 예를 명확히하려고 노력했습니다. 크기와 기능을 비교할 때 꽤 좋은 것처럼 보입니다. – marco

답변

0

일반적으로 Closure Compiler의 고급 모드가있는 라이브러리는 라이브러리의 extern 파일을 만들고 코드를 별도로로드하거나 코드를 컴파일 한 후 라이브러리를 연결하여 사용할 수 있습니다.

+0

그렇습니다. 그러나 라이브러리가 잘 컴파일 되더라도 라이브러리를 사용할 때 발생하는 codestyle이 복잡하지 않으면 항상 작동하지는 않습니다. 나는 명확하게하는 예제를 추가했습니다. – marco

+0

나는이 접근법이 여기서 유용하지 않다고 동의한다. – John

0

좋아, 해결책을 찾았습니다.

형식화 된 컨테이너 객체를 만들고 goog.bind를 사용하여 각 함수에 전달하면 작동합니다.

1

클로저 라이브러리의 goog.async.Deferred을 사용할 수 있습니까? 비동기 및 동기화 워크 플로우를 관리합니다.

0

내가 작성한 클로저 라이브러리의 매우 작은 흐름 제어 라이브러리는 ready.js입니다. 설명으로 당

:

여러 비동기 작업을 통해 시계 및 일부 또는 전부가 완료되면 청취자를 트리거합니다.

그것은 당신은 몇 가지 설명을 추가해야