Я делаю серию asyn c await запросов на выборку, каждый из которых зависит от переменной, найденной в предыдущем запросе. Теперь я настроил его через серию специальных функций, каждая из которых возвращает нужную мне переменную. Впоследствии у меня есть цепочка .then, в которой соответствующая переменная передается, используется и, наконец, помещается в html. Эти цепочки могут иногда содержать до 6 функций.
Это может выглядеть примерно так:
fetch1(artist_name) //returns an artistID
.then(artistID => fetch2(artistID, albumName)) //uses the artistID and album name to return a trackID
.then(trackID => fetch3(trackID)) //uses the trackID to return track credits
(result1)
fetch1(artist_name)
.then(artistID => fetch2(artistID, albumName))
.then(trackName => fetch4(trackName))
(result2)
Это отлично работает, но я Любопытно, является ли это наиболее эффективным способом продолжения, потому что для результатов 1 и 2 я повторяю fetch1 и fetch2, полагаясь на тот же объект JSON, возвращенный после 2-й выборки, чтобы выполнить мою третью выборку:
fetch1> fetch2 > fetch3> результат 1
fetch1> fetch2 > fetch4> результат 2
Может кто-нибудь указать мне ресурс или предоставить пример того, как это может быть лучше достигнуто? Я знаю, что javascript работает асинхронно (отсюда асин c fetch).
Все мои запросы на выборку выглядят примерно так:
async function fetch1(artist_name) {
try {
var url = `http://musicbrainz.org/ws/2/artist/?&fmt=json&limit=1&query=artist:"${artist_name}"`
let response = await fetch(url);
let data = await response.json()
let mbArtistID = data["artists"][0].id
return mbArtistID
} catch (error) {
console.log(error);
}