javascript - Promesa de búsqueda múltiple(secuencial)
angularjs json (1)
Puedes usar la recursividad
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)
})
Tengo que hacer una secuencia de
fetch()
Promesa: solo tengo 1 url a la vez, esto significa solo 1 promesa
fetch()
.
Cada vez que recibo un json, este contiene una url para otro json, así que tengo que hacer otra promesa
fetch()
.
Puedo trabajar con varias promesas, pero en este caso no puedo hacer
Promise.all()
, porque no tengo toda la URL, sino solo una.
Este ejemplo no funciona, todo se 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);