エントリー
呼び出しの問題と、キュー内の次の呼び出しへの情報のさらなる転送を解決するために、AQueueモジュール(非同期呼び出しの順次キューの実装)が生まれました。 このモジュールの実装には、Express.jsの中間ルーティングレイヤーの実装で使用される原則があります(たとえば、特定のビューへのアクセスの可能性をチェックするため)。 このメカニズムは、必要なパラメーターを渡してnext()というコールバック関数を呼び出すことで実装されます。
それでは始めましょう!
実装
キューを編成するために、関数が呼び出される順序で入力される配列が選択されました。
- AddTo関数-次の関数をキューに追加します。
- 関数next- 次の関数を順番に呼び出すことができます。
- 完了した関数-正常に完了した場合、またはerrパラメーターがnullでない場合に呼び出されます
- 関数の実行 -キューの順に呼び出しメカニズムを起動します。
- qプロパティ-関数を配列に格納するために使用されます。
- Cbプロパティ-呼び出しキュー完了関数を格納するために使用されます。
- 関数 AQueue ( ) {
- var that = this ;
- あれ。 q = [ ] ;
- あれ。 cb = null ;
- あれ。 addTo = function ( f ) {
- あれ。 q プッシュ ( f ) ;
- それを返す ;
- } ;
- あれ。 next = function ( err 、 data ) {
- if ( that。q。length > 0 ) {
- var f =それ。 q シフト ( ) ;
- if ( err ) {
- あれ。 q = [ ] ;
- あれ。 cb (エラー、データ) ;
- } else {
- f (つまり、 次 、エラー、データ) ;
- }
- } else {
- あれ。 cb (エラー、データ) ;
- }
- } ;
- あれ。 完了 = 関数 ( cb ) {
- あれ。 cb = cb ;
- それを返す ;
- } ;
- あれ。 run = function ( ) {
- それを返します。 next ( null 、 null ) ;
- } ;
- }
- 輸出。 AQueue = AQueue ;
使用する
以下は、AQueueモジュールの使用例です。
- var AQueue = reqiure ( 'aqueue' ) 。 AQueue
- var aq = new AQueue ( ) ;
- 水溶液 addTo ( function ( next 、 err 、 data ) {
- //必要なアクションを実行します
- 次(エラー、データ) ;
- } ) 。 addTo ( function ( next 、 err 、 data ) {
- //追加のアクションを実行します
- //オブジェクトをラップすることでデータを結合できます
- next ( err 、 { data : data 、 checked : true } ) ;
- } ) 。 完了 ( function ( err 、 data ) {
- //最終アクションを実行します。
- } ) 。 実行 ( ) ;