/ / Javascript: como aguardar o resultado de uma busca e iniciar outra [duplicada] - javascript, json, fetch, es6-promessa

Javascript: como esperar pelo resultado de uma busca e depois iniciar outra [duplicata] - javascript, json, fetch, es6-promise

Este código está definitivamente errado, mas não sei como corrigi-lo.

Por exemplo.

fetch("api/foo?get_max=True")
.then( function(response) {
return response.json();
}
.then( function(response) {
var max = response["max"];
}

fetch("api2/bar?max=" + max)
.then( function(response) {
return response.json();
}
.then( function(mydata) {
processdata(mydata);
}

Obviamente, isso não funciona, porque o max varque eventualmente serão definidos na primeira busca ainda não existe quando a segunda busca for executada. Como posso "encadear" ou forçar a segunda busca a "esperar" pela primeira busca?

Respostas:

3 para resposta № 1

Desde a fetch() retorna uma promessa, você pode devolvê-lo de um then() e se comportará conforme o esperado:

fetch("api/foo?get_max=True")
.then( response => response.json())
.then( response => {
var max = response["max"];
return fetch("api2/bar?max=" + max)
})
.then( response => response.json())
.then( mydata => processdata(mydata))