Как я могу получить два API в JavaScript? - PullRequest
0 голосов
/ 04 июля 2019

Мне нужно получить два API, один из которых содержит все имя пользователя и страну, а другой API содержит информацию о пользователе. Итак, я получаю первый API:

enter code here

let getUsername= new Promise(function(resolve,reject){
fetch(userUrl).then(function(response){
    return response.json()
}).then(function(response){
  return response.map((x=>x.name))
}).then(function(response){
    var name=response
    console.log(name)
    return name
})
})

и возвращаемое значение должно быть таким

[{name:'carlos',country:'mexico'},{name:'jenny',country:'germany'}]

и этот массив существует только в функции getUsername, но мне нужно использовать это для получения другого API

имена = [] введите код здесь

 let promisesArray = names.map(name=> {
 // make a new promise for each element of cities
 return new Promise((resolve, reject) => {
  let url = `http:// userinfo/${name}`
  request(url, function(error, response, body) {
    if (error) {
    reject(error);
    }
     var data = JSON.parse(body)
     var results = data.main
  // resolve once we have some data
  resolve(results);
});
})
})

   Promise.all(promisesArray)
  .then(function(results) {
   console.log(results)
   })
  .catch(function(error) {
    console.log(error)
    })

Итак, мне нужно создать пользовательский массив, который имеет имя только из первого API, чтобы я мог использовать функцию map для извлечения второго API.

1 Ответ

0 голосов
/ 04 июля 2019

Просто деструктурируйте name в вашем map вызове, когда вы определите users:

const users = userarray.map(({ name }) => fetch(`http://api.userdata.${name}`));

Если вы хотите, чтобы он тоже назывался username, просто назовите его:

const users = userarray.map(({ name: username }) => fetch(`http://api.userdata.${username}`));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...