Múltipla busca sequencial () Promessa

Eu tenho que fazer uma seqüência de fetch() Promise: Eu tenho apenas 1 url de cada vez, isso significa apenas 1 fetch() promise. Toda vez que eu recebo um json, este contém um url para outro json, então eu tenho que fazer outro fetch() prometer.

Eu sou capaz de trabalhar com múltiplas promises, mas neste caso eu não posso fazer Promise.all() , porque eu não tenho todo o URL, mas apenas um.

Este exemplo não funciona, tudo congela.

 function fetchNextJson(json_url) { return fetch(json_url, { method: 'get' }) .then(function(response) { return response.json(); }) .then(function(json) { console.log(json); return json; }) .catch(function(err) { console.log('error: ' + error); }); } function getItems(next_json_url) { if (!(next_json_url)) return; get_items = fetchNextJson(next_json_url); interval = $q.when(get_items).then(function(response) { console.log(response); next_json_url = response.Pagination.NextPage.Href; }); getItems(next_json_url); } var next_json_url = 'http://localhost:3000/one'; getItems(next_json_url); 

Você pode usar recursion

 function fetchNextJson(json_url) { return fetch(json_url, { method: 'get' }) .then(function(response) { return response.json(); }) .then(function(json) { results.push(json); return json.Pagination.NextPage.Href ? fetchNextJson(json.Pagination.NextPage.Href) : results }) .catch(function(err) { console.log('error: ' + error); }); } var next_json_url = 'http://localhost:3000/one'; var results = []; fetchNextJson(json_url).then(function(res) { console.log(res) })