問題タブ [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.
angularjs - ui ルーターはチェーンの約束を解決します
データが相互に依存している ui-router を使用して状態を変更するときにデータが必要になるため、連鎖プロミスを使用する必要があります
そして私の状態は
undefined を返します。誰が理由を知っていますか?
javascript - AngularJS で制限されたページを管理するためのインターセプター
数日前に AngularJS を使い始めたばかりで、サーバーの応答から 401 ステータスをインターセプトするインターセプターに問題があります。
401 が返され、そのイベントでリダイレクトがトリガーされると、「loginRequired」タイプのメッセージをブロードキャストします。
問題は、ログインしていないときに制限されたページにアクセスしようとすると、ログイン ページにリダイレクトされる前にページが一瞬点滅することです。私はまだ非同期のもの、約束などのかなりの初心者です。誰かが私が間違っていることを指摘できますか?
これが私のインターセプターです。ご覧のとおり、非常に単純ですが、要点を説明するために簡略化し、さらに発展させる前に物事を理解しようとしています。
インターセプター
私のインターセプターの注入
制限ページへのルート
制限付きページ コントローラー
$rootScope イベント ウォッチャー
私の問題は明らかに、インターセプターと $q の処理方法にあります。githubでインターセプターを作成する別の方法を見つけましたが、それは公式ドキュメントが使用する方法ではないため、古い方法である可能性があり、工場に入れるほどクリーンではないと思います。彼は、モジュールの config 関数でルートを定義した後、このコードを配置するだけです。しかし、このコードは機能し、ページがフラッシュされません。
Github で見つけた別の方法
しかし、私の目標は「機能させる」ことだけではなく、「壊れていない場合は直さないでください」というマントラが嫌いです。自分のコードの問題を理解したい。ありがとう!
javascript - AngularJS で Angular 非同期呼び出しを中断/返す方法
私は次のプロジェクト構造を持っています:
- PageController.js
- BusinessService.js
-NetworkManager.js
私の PageController には、次の呼び出しがあります。
私のBusinessServiceでは:
クラスで http 呼び出しが行われていNetworkManager
ます。ここでの問題は、ユーザー データがないときに通話を中断したいので、reject
.
これはエラーを返します:Cannot read property 'then' of undefined
の呼び出しに関してPageController
。
私の状況では、userData がない場合、リクエストをキャンセルしたいのですが、どうすればこれを達成できますか?
javascript - AngularJS の promise とネストされたコントローラー
次のジレンマがあります。
次のようなネストされたコントローラーが 2 つある場合:
Controller1 にはフィールドがあります
これは promise (外部サーバーへの非同期呼び出し) の結果です。ここまでは順調ですね。しかし、次の状況をどのように管理できますか。
Controller2で使用する必要があります
コントローラーが発射されたとき。最初のコントローラーの約束が解決されるのを待ってから、その var userName 割り当てを評価するように、2 番目のコントローラーを設定するにはどうすればよいですか? (そうしないと、 $scope.$parent が未定義であることがわかります)
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?
javascript - 複雑なリソース読み込みシーケンスでプロミスを正しく連鎖させる方法は?
角度コードでは、次のようなチェーンされた約束があります。
これらの関数はそれぞれ、リソースから物をロードし、さらにエラーと成功時に $scope を変更する promise を返します。
コントローラーの初期化のコードで次のように使用するつもりです。
しかし、これは私が望むようには機能しません。理想的には、「すべての約束が解決したら、ここで何かをします」というメッセージが表示される必要があります。代わりに、ensureTypesLoaded にリストされている関数内で解決された promise からのメッセージよりも前に表示されることがわかります。
次のような関数 ensureTypesLoaded を作成したいと思います。
- チェーンされたすべてのロードが解決されたときに解決される promise を返します。
- 「内部」プロミスのいずれかが失敗した場合、関数は次の呼び出しに進むべきではありませんが、拒否されたプロミスを返します。
- 明らかに、ensureTypesLoaded().then(...) を呼び出す場合、ensureTypesLoaded 内のすべてが解決された後に then() 内のものを呼び出す必要があります。
チェーンされた約束を正しく構築するのを手伝ってください。