問題タブ [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.
javascript - $rootScope:infdig 無限 $digest ループの解決
無限ダイジェスト ループの基本的な考え方とそれがどのように発生するかは理解できましたが、問題に直面しています。ここに私のコードと問題を示すフィドルがあります:
jsfiddle コンソールでは、無限のダイジェスト ループが表示されます。
基本的に、まだロードされていない可能性のあるデータについて決定を下す必要があるため、then() を使用して約束が解決されるまで待つ必要があります。ユーザーという約束があります。ユーザーに対して then() を呼び出すコードには、2 つの異なる場所があります。
- 定義した直後です。それに基づいてスコープ変数を設定する必要があります。
- 別のスコープ メソッドでは、 $scope.isAdmin()
2 番目については、なぜ $scope.isAdmin() メソッドで直接 $scope.user を使用しないのかと聞かれるかもしれません。問題は、ユーザーの非同期リクエストが戻る前に $scope.isAdmin() が呼び出される可能性があることです。その場合、$scope.isAdmin() から戻る前に「ブロック」する必要があります。
私の質問は、 $scope.isAdmin() が「監視された」変数が変更され、ダイジェストサイクルを再度実行する必要があるとAngularに考えさせているのはどうですか?
$scope.isAdmin() は実際には何も変更していません。
以下はコードを簡略化したものです。
HTML:
そしてJS:
javascript - 「then」メソッドを事前定義済みの「finally」メソッドの前に $promise チェーンに追加する
使用事例
a に続いて aを実行してクリーンアップする$resource
呼び出しがあります。サーバーを待っている間、ユーザーはシステムと対話する可能性があり、メソッドの前にメソッドを追加したいと考えています。then
finally
then
finally
then
定義済みの前に実行される既存の$promise
チェーンにメソッドを追加するにはどうすればよいfinally
ですか?
サンプルコード
以下は、目的のユース ケースの簡略化されたコード サンプルです。メソッドを既存のチェーンに追加すると、 、、または何らかのルーチンthen
によってトリガーされる可能性があります。$on
$watch
結果
望ましい結果:
現在の結果:
デモ
javascript - 別の戻り関数を呼び出す戻り関数
別の戻り関数内で戻り関数を呼び出そうとしていますが、myfunctionName が未定義になっています..ここにコードがあります
それで、「定義されていません」というエラーが発生することなく、myFunction2内でmyfunction1を呼び出すにはどうすればよいですか
javascript - Angular ファクトリ promise 内の可変スコープ
ファクトリの Angular promise からコントローラにデータを返すのに問題があります。この例では、
ローカル データをフィルタリングしてローカル タイムスタンプを取得し、それをリモート タイムスタンプと比較して、ローカル タイムスタンプがリモート タイムスタンプよりも小さい場合はすべてのデータを再ダウンロードするようコントローラに指示します。
ローカル データを正常にフィルタリングし、期待どおりの結果を得ています。私が立ち往生しているように見えるのは、約束です。.success または .then メソッド内でフィルター処理されたリモート データをログアウトすることはできますが、約束から値を返すことはできませんでした。ここではおそらく変数のスコープに問題があることを知っています。
また、工場からコントローラーにブール値を返すのが最善ですか (更新する必要がありますか? true/false)、またはローカルとリモートのタイムスタンプ付きデータを含む小さな obj を返し、そこから何をすべきかをコントローラーに任せますか?
前もって感謝します。
javascript - AngularJS : 自己連鎖の約束を解決する
次の例のように、promise を連鎖できることはわかっています。
deferA.resolve(data)
this will resolveを呼び出すとpromiseA
、そのthen
メソッドが実行され、promiseB
解決されます。最後に promiseBthen
が実行され、解決されますpromiseC
。フラットでシンプルです(これが正しいことを願っています)。
しかし、Promise がそれ自体に連鎖するとどうなるでしょうか?
上記の例を次のように変更すると:
さてどうなる?実行順序は?
さらに、これはどうですか:
この場合はどうなりますか?
angularjs - HTML テンプレートでの AngularJS Promise のフィルタリング
私のHTMLテンプレートには、次のものがあります。
person
コントローラーで次のように設定されます。
そしてPerson
リソースです:
問題は、プロミスの準備が整う前にフィルターが呼び出され、未定義の値が読み取られることです。これに対処する正しい方法は何ですか?
現在、属性に対して if チェックを使用していますが、これは理想的ではないようです。
angularjs - AngularJS : Promise API の success メソッドにデータを返すためのモック http サービス ($httpBackend を使用)
質問のより単純なバージョンを解釈しようとしました。
1)コントローラー(myController)メソッド(減算)のユニットテストを書いています。
2) httpbackend を使用して http をモックする 減算メソッドで http の成功関数に 200 の応答を返し、ダミーの DELETE URL の成功関数でその値を下げたい (テスト環境の外では常に成功する)。
3)しかし、expect(scope.testvalue) は 5 のみであることがわかります。どんな助けでも大歓迎です。
表示されるエラーは (予想される) エラーです: false が true であると予想されます。