問題タブ [angular-promise]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
956 参照

angularjs - ui ルーターはチェーンの約束を解決します

データが相互に依存している ui-router を使用して状態を変更するときにデータが必要になるため、連鎖プロミスを使用する必要があります

そして私の状態は

undefined を返します。誰が理由を知っていますか?

0 投票する
1 に答える
1501 参照

javascript - AngularJS で制限されたページを管理するためのインターセプター

数日前に AngularJS を使い始めたばかりで、サーバーの応答から 401 ステータスをインターセプトするインターセプターに問題があります。

401 が返され、そのイベントでリダイレクトがトリガーされると、「loginRequired」タイプのメッセージをブロードキャストします。

問題は、ログインしていないときに制限されたページにアクセスしようとすると、ログイン ページにリダイレクトされる前にページが一瞬点滅することです。私はまだ非同期のもの、約束などのかなりの初心者です。誰かが私が間違っていることを指摘できますか?

これが私のインターセプターです。ご覧のとおり、非常に単純ですが、要点を説明するために簡略化し、さらに発展させる前に物事を理解しようとしています。

インターセプター

私のインターセプターの注入

制限ページへのルート

制限付きページ コントローラー

$rootScope イベント ウォッチャー

私の問題は明らかに、インターセプターと $q の処理方法にあります。githubでインターセプターを作成する別の方法を見つけましたが、それは公式ドキュメントが使用する方法ではないため、古い方法である可能性があり、工場に入れるほどクリーンではないと思います。彼は、モジュールの config 関数でルートを定義した後、このコードを配置するだけです。しかし、このコードは機能し、ページがフラッシュされません。

Github で見つけた別の方法

しかし、私の目標は「機能させる」ことだけではなく、「壊れていない場合は直さないでください」というマントラが嫌いです。自分のコードの問題を理解したい。ありがとう!

0 投票する
1 に答える
416 参照

javascript - AngularJS で Angular 非同期呼び出しを中断/返す方法

私は次のプロジェクト構造を持っています:
- PageController.js
- BusinessService.js
-NetworkManager.js

私の PageController には、次の呼び出しがあります。

私のBusinessServiceでは:

クラスで http 呼び出しが行われていNetworkManagerます。ここでの問題は、ユーザー データがないときに通話を中断したいので、reject.
これはエラーを返します:Cannot read property 'then' of undefinedの呼び出しに関してPageController

私の状況では、userData がない場合、リクエストをキャンセルしたいのですが、どうすればこれを達成できますか?

0 投票する
2 に答える
1582 参照

javascript - AngularJS の promise とネストされたコントローラー

次のジレンマがあります。

次のようなネストされたコントローラーが 2 つある場合:

Controller1 にはフィールドがあります

これは promise (外部サーバーへの非同期呼び出し) の結果です。ここまでは順調ですね。しかし、次の状況をどのように管理できますか。

Controller2で使用する必要があります

コントローラーが発射されたとき。最初のコントローラーの約束が解決されるのを待ってから、その var userName 割り当てを評価するように、2 番目のコントローラーを設定するにはどうすればよいですか? (そうしないと、 $scope.$parent が未定義であることがわかります)

0 投票する
2 に答える
3241 参照

angularjs - Iterate over returned angular resource in controller

I have a controller that accesses a resource Tag like so:

which resolves to something like this:

For this particular controller, the returned tags should have an additional attribute "active": true, like { name: "tag1", label: "Tag1", active: true }.

How can I iterate over the returned promise once it is resolved to add this boolean?

0 投票する
1 に答える
474 参照

javascript - 複雑なリソース読み込みシーケンスでプロミスを正しく連鎖させる方法は?

角度コードでは、次のようなチェーンされた約束があります。

これらの関数はそれぞれ、リソースから物をロードし、さらにエラーと成功時に $scope を変更する promise を返します。

コントローラーの初期化のコードで次のように使用するつもりです。

しかし、これは私が望むようには機能しません。理想的には、「すべての約束が解決したら、ここで何かをします」というメッセージが表示される必要があります。代わりに、ensureTypesLoaded にリストされている関数内で解決された promise からのメッセージよりも前に表示されることがわかります。

次のような関数 ensureTypesLoaded を作成したいと思います。

  • チェーンされたすべてのロードが解決されたときに解決される promise を返します。
  • 「内部」プロミスのいずれかが失敗した場合、関数は次の呼び出しに進むべきではありませんが、拒否されたプロミスを返します。
  • 明らかに、ensureTypesLoaded().then(...) を呼び出す場合、ensureTypesLoaded 内のすべてが解決された後に then() 内のものを呼び出す必要があります。

チェーンされた約束を正しく構築するのを手伝ってください。