2016-07-28 8 views
0

を終えた後、私は次のコードを持っている$ .whenを呼び出します。それをどうすれば実現できますか?jqueryの関数が

+0

コードとは何ですかAddRoleToUser()の中で?おそらくそれはAJAXリクエストです。そうでなければ、コードはすでにあなたが必要とするものをやっているでしょう –

+0

こんにちはRory、@ RoryMcCrossan、それはajaxリクエストです。 –

答えて

3

AddRoleToUser機能が終了した後にのみ$.whenが発生します。

これはあなたの現在のコードが行うことです。しかし、AddRoleToUserが非同期プロセスを開始し、そのプロセスが完了するまで待つ場合は、AddRoleToUserはコールバックを受け入れるか、約束を返す必要があります。

我々はそれが約束を返すと仮定した場合(あなたがそれを呼び出すしない場合は代わりにダミーの約束を使用して)それを解決するために、そしてあなたが$.when待ち時間にお電話を持つことができます。

isPublisher.done(function(isActive) { 
    var p; 
    if (isActive) { 
     p = AddRoleToUser(inlineUid, "Publisher"); 
    } else { 
     p = $.Deferred().resolve().promise(); 
    } 
    p.then(function() { 
     $.when(SetCountryAndLanguage(), GetUserRoles()).done(SetInlineManualTracking); 
    }); 
}); 
+0

AddRoleToUserはajaxリクエストです。質問に追加しました。 –

+0

@ OffirPe'erしたがって、 'AddRoleToUser()'はajaxリクエスト(約束)を返すべきです: 'function AddRoleToUser(userId、role){return $ .ajax(...);} } 'EDIT:あなたのオープニングの質問の編集に続いて、あなたがコードとして使っているかどうかは本当にわかりません...? –

+0

@ A.Wolff私はそれを加えました。 –