質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

Q&A

解決済

1回答

2437閲覧

angularjs1系で再帰的な非同期処理を順番に実行したい

退会済みユーザー

退会済みユーザー

総合スコア0

AngularJS

AngularJSはオープンソースのJavaScriptフレームワークです。ブラウザ上で動作するウェブアプリケーションの開発にMVCアーキテクチャを取り入れることを目的としています。

0グッド

0クリップ

投稿2016/10/17 01:51

編集2016/11/11 16:45

https://teratail.com/questions/51611
上記記事に関連する質問です。

やりたいこと

再帰的な非同期処理を順番に実行したい

以下サンプルソースのprocess2非同期処理結果を元に
process2subの非同期処理実行し、
その結果で、更にデータの残りが無いか非同期処理を実行するような
subについて、再帰関数で非同期処理を呼び出すイメージです。

この実装はどのようにしたらわかりません。。
サンプルソースを例示いただけると助かります。

サンプルソース

javascript

1 2 var process1 = function(val) { 3 var deferred = $q.defer(); 4 5 // 仮想非同期 6 setTimeout(function(){ 7 if (val) { 8 deferred.resolve('ok: ' + val); 9 } else { 10 deferred.reject('ng; ' + val); 11 } 12 }, 2000); 13 14 return deferred.promise; 15 }; 16 17 var process2 = function(val) { 18 var deferred = $q.defer(); 19 20 // 仮想非同期 21 setTimeout(function(){ 22 if (val) { 23 deferred.resolve('ok: ' + val); 24 } else { 25 deferred.reject('ng; ' + val); 26 } 27 }, 2000); 28 29 return deferred.promise; 30 }; 31 32 var process3 = function(val) { 33 var deferred = $q.defer(); 34 35 // 仮想非同期 36 setTimeout(function(){ 37 if (val) { 38 deferred.resolve('ok: ' + val); 39 } else { 40 deferred.reject('ng; ' + val); 41 } 42 }, 2000); 43 44 return deferred.promise; 45 }; 46 47 var process4 = function(val) { 48 var deferred = $q.defer(); 49 50 // 仮想非同期 51 setTimeout(function(){ 52 if (val) { 53 deferred.resolve('ok: ' + val); 54 } else { 55 deferred.reject('ng; ' + val); 56 } 57 }, 2000); 58 59 return deferred.promise; 60 }; 61 62 var process5 = function(val) { 63 var deferred = $q.defer(); 64 65 // 仮想非同期 66 setTimeout(function(){ 67 if (val) { 68 deferred.resolve('ok: ' + val); 69 } else { 70 deferred.reject('ng; ' + val); 71 } 72 }, 2000); 73 74 return deferred.promise; 75 }; 76 77 process1('process1') 78 .then(function(val) { 79 // 処理 80 console.log('process1: ' + val); 81 return process2('process2') 82 }) 83 .then(function(val) { 84 // 処理 85 console.log('process2: ' + val); 86 return process3('process3') 87 }) 88 .then(function(val) { 89 // 処理 90 console.log('process3: ' + val); 91 return process4('process4') 92 }) 93 .then(function(val) { 94 // 処理 95 console.log('process4: ' + val); 96 return process4('process5') 97 }) 98 .then(function(val) { 99 console.log('finish'); 100 }) 101 ; 102

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

自己解決しました。。。。

投稿2016/11/11 16:46

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問