2017-01-24 9 views
-1

私は、インデックスに基づいてAPIからドキュメントを返すコードをいくつか持っており、APIを徐々に繰り返していきたいと思います。 APIがどれだけ多くの要素を持つのか分からないので、約束が拒否されるまでデータを取得したいのです。理想的には、これは値を渡すために発電機を使用して行われることになるが、私はAPI呼び出しがエラーを返さない場合は、インデックス100から開始し、次通過作品拒否されるまで約束を生成する

someapifunc() // Returns a promise 

function* apifuncs() { 
    var index = yield 1; 
    index++; 
    yield someapifunc(index - 1); 
} 

let calls = apifuncs(); 
apifuncs.next().value.then() // Works 
apifuncs.next().value.then() // This won't because index and everything is out of the current scope 
+0

はあなたが最終的な結果として何が必要なのか拒否約束でしょうか?あなたは中間結果が必要ですか? –

答えて

0

になるだろうかわかりません、データを出力した後、1つ下のインデックスを呼び出します。 API呼び出しがエラーを返すと、「完了」が表示されます。

function callAPI(index) { 
    someapifunc(index).then(
    function(data) { 
     console.log(data); 
     callAPI(++index); 
    }, 
    function(err) { 
     console.log('Done'); 
    } 
); 
} 
callAPI(1); 
+0

元のコードは1から始まり、増分のようです –

+0

ああ、私は更新します。 –

1

これはあなたが望むものに近いかもしれない、しかし、「生成」最後の値が

function* apifuncs() { 
    var index = 1; 
    var ok = true; 
    var p; 
    while(ok) { 
     p = someapifunc(index); 
     p.catch(() => ok = false); 
     yield p; 
     index += 1; 
    } 
} 
関連する問題