JavaScript/jQueryで任意の数のオプションの関数呼び出しをキューに入れようとしています。たとえば、2番目(または3番目、4番目など)の関数またはAJAX呼び出しを実行する前に、ユーザーが認証され、Cookieが設定されていることを確認する必要がある場合があります。
最近追加されたjQuery.Deferredを使用してこれを行うことを検討しましたが、呼び出しがどの順序で実行されるかは問題ではないことがわかりました(真の非同期スタイル)。また、Deferredインスタンスが解決されると、それを元に戻すことはできないことを読みました。
これが私が今これに取り組んでいるところです。最初は、Deferredインスタンスを解決するように設定し、オプションの関数がスタックに表示された場合は解決しないことを考えていました。
var d = $.Deferred(),
chained = d,
d.resolve(),
div = extra.find( "div:first" );
if ( extra.attr( "requires-auth" ) != undefined && !config.user_is_authenticated )
chained = chained.pipe( authenticate );
if ( div.length )
chained = chained.pipe( prepareExtra( div ) );
// When the two optional methods are resolved, show the content
chained.done( function() {
extra.fadeIn( 500 )
} );
私の質問は、純粋なJavaScript / jQueryでAJAX呼び出しをキューに入れる(0からN)ための最良の方法は何ですか?(プラグインを使用せずに)。
タク!
編集2:解決しました! これのいくつかの実用的な例を次に示します。1つはAJAXなしで、もう1つは https://gist.github.com/1021429https://gist.github.com/1021435を使用しています 。