問題タブ [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 に答える
13261 参照

javascript - $rootScope:infdig 無限 $digest ループの解決

無限ダイジェスト ループの基本的な考え方とそれがどのように発生するかは理解できましたが、問題に直面しています。ここに私のコードと問題を示すフィドルがあります:

http://jsfiddle.net/eS5e5/1/

jsfiddle コンソールでは、無限のダイジェスト ループが表示されます。

基本的に、まだロードされていない可能性のあるデータについて決定を下す必要があるため、then() を使用して約束が解決されるまで待つ必要があります。ユーザーという約束があります。ユーザーに対して then() を呼び出すコードには、2 つの異なる場所があります。

  1. 定義した直後です。それに基づいてスコープ変数を設定する必要があります。
  2. 別のスコープ メソッドでは、 $scope.isAdmin()

2 番目については、なぜ $scope.isAdmin() メソッドで直接 $scope.user を使用しないのかと聞かれるかもしれません。問題は、ユーザーの非同期リクエストが戻る前に $scope.isAdmin() が呼び出される可能性があることです。その場合、$scope.isAdmin() から戻る前に「ブロック」する必要があります。

私の質問は、 $scope.isAdmin() が「監視された」変数が変更され、ダイジェストサイクルを再度実行する必要があるとAngularに考えさせているのはどうですか?

$scope.isAdmin() は実際には何も変更していません。

以下はコードを簡略化したものです。

HTML:

そしてJS:

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

javascript - 「then」メソッドを事前定義済みの「finally」メソッドの前に $promise チェーンに追加する

使用事例

a に続いて aを実行してクリーンアップする$resource呼び出しがあります。サーバーを待っている間、ユーザーはシステムと対話する可能性があり、メソッドの前にメソッドを追加したいと考えています。thenfinallythenfinally

then定義済みの前に実行される既存の$promiseチェーンにメソッドを追加するにはどうすればよいfinallyですか?

サンプルコード

以下は、目的のユース ケースの簡略化されたコード サンプルです。メソッドを既存のチェーンに追加すると、 、、または何らかのルーチンthenによってトリガーされる可能性があります。$on$watch

結果

望ましい結果:

現在の結果:

デモ

jsフィドル

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

javascript - 別の戻り関数を呼び出す戻り関数

別の戻り関数内で戻り関数を呼び出そうとしていますが、myfunctionName が未定義になっています..ここにコードがあります

それで、「定義されていません」というエラーが発生することなく、myFunction2内でmyfunction1を呼び出すにはどうすればよいですか

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

javascript - Angular ファクトリ promise 内の可変スコープ

ファクトリの Angular promise からコントローラにデータを返すのに問題があります。この例では、

http://jsfiddle.net/c3xjE/

ローカル データをフィルタリングしてローカル タイムスタンプを取得し、それをリモート タイムスタンプと比較して、ローカル タイムスタンプがリモート タイムスタンプよりも小さい場合はすべてのデータを再ダウンロードするようコントローラに指示します。

ローカル データを正常にフィルタリングし、期待どおりの結果を得ています。私が立ち往生しているように見えるのは、約束です。.success または .then メソッド内でフィルター処理されたリモート データをログアウトすることはできますが、約束から値を返すことはできませんでした。ここではおそらく変数のスコープに問題があることを知っています。

また、工場からコントローラーにブール値を返すのが最善ですか (更新する必要がありますか? true/false)、またはローカルとリモートのタイムスタンプ付きデータを含む小さな obj を返し、そこから何をすべきかをコントローラーに任せますか?

前もって感謝します。

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

javascript - AngularJS : 自己連鎖の約束を解決する

次の例のように、promise を連鎖できることはわかっています。

deferA.resolve(data)this will resolveを呼び出すとpromiseA、そのthenメソッドが実行され、promiseB解決されます。最後に promiseBthenが実行され、解決されますpromiseC。フラットでシンプルです(これが正しいことを願っています)。

しかし、Promise がそれ自体に連鎖するとどうなるでしょうか?

上記の例を次のように変更すると:

さてどうなる?実行順序は?

さらに、これはどうですか:

この場合はどうなりますか?

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

angularjs - HTML テンプレートでの AngularJS Promise のフィルタリング

私のHTMLテンプレートには、次のものがあります。

personコントローラーで次のように設定されます。

そしてPersonリソースです:

問題は、プロミスの準備が整う前にフィルターが呼び出され、未定義の値が読み取られることです。これに対処する正しい方法は何ですか?

現在、属性に対して if チェックを使用していますが、これは理想的ではないようです。

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

angularjs - AngularJS : Promise API の success メソッドにデータを返すためのモック http サービス ($httpBackend を使用)

質問のより単純なバージョンを解釈しようとしました。
1)コントローラー(myController)メソッド(減算)のユニットテストを書いています。
2) httpbackend を使用して http をモックする 減算メソッドで http の成功関数に 200 の応答を返し、ダミーの DELETE URL の成功関数でその値を下げたい (テスト環境の外では常に成功する)。
3)しかし、expect(scope.testvalue) は 5 のみであることがわかります。どんな助けでも大歓迎です。

表示されるエラーは (予想される) エラーです: false が true であると予想されます。