Могу ли я объединить существующие функции .fetch в больший синхронный запрос при использовании .fetch? - PullRequest
1 голос
/ 08 октября 2019

Я знаю, как объединить все это в одну функцию. Я запутался в том, как я могу включить возвращаемое значение следующей функции в другую?

function queryPlayers() {
    fetch("foo", apiParams)
        .then(res => { 
            if(res.ok){ return res.json() }
            else { return fetch("backup_bar", apiParams)
                .then(res => { return res.json() }
            )}
        })
        .then(playerData => { return playerData })
        .catch(err => console.log(err))
}

Все, что я хочу сделать, это взять playerData или JSON, который я получаю, и бросить его в другую функцию какспор, как только обещание разрешается. Я довольно плохо знаком с функциями стрелок и обещаниями и чувствую, что просто что-то упускаю.

function queryPlayers() {
    console.log("Querying players...");
    return fetch("https://api-v2.royaleapi.com/top/players", apiParams)
        .then(res => { 
            if(res.ok){ return res.json() }
            else { return fetch("http://127.0.0.1:8000/js/players.json", apiParams)
                .then(res => res.json()
            )}
        })
        .then(playerData => { 
            return playerData;
        })
        .catch(err => console.log(err))
}
function queryData(){
    queryPlayers()
    .then(data => console.log(data))
}
$(function(){
    queryData();
});

1 Ответ

0 голосов
/ 08 октября 2019

Вы можете поместить все свои обещания в один звонок, как показано ниже:

Promise.all([
    fetchPromised("http://backend/foo.txt", 500),
    fetchPromised("http://backend/bar.txt", 500),
    fetchPromised("http://backend/baz.txt", 500)
]).then((data) => {
    let [ foo, bar, baz ] = data
    console.log(`success: foo=${foo} bar=${bar} baz=${baz}`)
}, (err) => {
    console.log(`error: ${err}`)
})

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...