タグ付けされた質問 「angular-promise」


10
AngularJS:非同期データでサービスを初期化する
非同期データで初期化したいAngularJSサービスがあります。このようなもの: myModule.service('MyService', function($http) { var myData = null; $http.get('data.json').success(function (data) { myData = data; }); return { setData: function (data) { myData = data; }, doStuff: function () { return myData.getSomeData(); } }; }); 何かが戻ってくるdoStuff()前に呼び出そうとするとmyData、nullポインタ例外が発生するため、これは明らかに機能しません。こことここで尋ねられた他のいくつかの質問を読んでわかる限り、私にはいくつかのオプションがありますが、どれも非常にきれいに見えません(おそらく私は何かを見逃しています): 「run」を使用したセットアップサービス 私のアプリを設定するときにこれを行います: myApp.run(function ($http, MyService) { $http.get('data.json').success(function (data) { MyService.setData(data); }); }); 次に、私のサービスは次のようになります。 myModule.service('MyService', function() …


12
約束の価値にアクセスするには?
私はAngularのドキュメントからこの例を見てい$qますが、これはおそらく一般的な約束に当てはまると思います。以下の例は、コメントが含まれたドキュメントからそのままコピーされています。 promiseB = promiseA.then(function(result) { return result + 1; }); // promiseB will be resolved immediately after promiseA is resolved and its value // will be the result of promiseA incremented by 1 これがどのように機能するのか私にはわかりません。.then()最初のの結果を呼び出すことができる場合は、.then()それらを連鎖させることができます。これpromiseBは、私ができることがわかっているため、型のpromiseオブジェクトObjectです。それはではありませんNumber。では、「その値は、promiseAが1ずつ増加した結果になる」とはどういう意味ですか 私はそれにアクセスするpromiseB.valueべきですか、それともそのようなものですか?成功のコールバックはどのようにプロミスを返し、「結果+ 1」を返すことができますか?何か不足しています。

5
すべての約束が解決するのを待ちます
したがって、長さが不明な複数のプロミスチェーンがある状況にあります。すべてのチェーンが処理されたときに何らかのアクションを実行したいのですが。それは可能ですか?次に例を示します。 app.controller('MainCtrl', function($scope, $q, $timeout) { var one = $q.defer(); var two = $q.defer(); var three = $q.defer(); var all = $q.all([one.promise, two.promise, three.promise]); all.then(allSuccess); function success(data) { console.log(data); return data + "Chained"; } function allSuccess(){ console.log("ALL PROMISES RESOLVED") } one.promise.then(success).then(success); two.promise.then(success); three.promise.then(success).then(success).then(success); $timeout(function () { one.resolve("one done"); }, Math.random() …

1
決して解決された約束はメモリリークを引き起こしませんか?
私は持っています Promiseます。必要に応じてAJAXリクエストをキャンセルするために作成しました。しかし、そのAJAXをキャンセルする必要がないので、それを解決したことがなく、AJAXは正常に完了しました。 簡略化されたスニペット: var defer = $q.defer(); $http({url: 'example.com/some/api', timeout: defer.promise}).success(function(data) { // do something }); // Never defer.resolve() because I don't need to cancel that ajax. What happens to this promise after request? そのような約束を解決してメモリリークを引き起こしたことはありませんか?Promiseライフサイクルを管理する方法について何かアドバイスはありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.