Изменить результат Promise (JavaScript) - PullRequest
1 голос
/ 31 мая 2019

Я хочу отредактировать файл res.json, в результате которого будет получен обратный вызов (Promise.then) для ассоциативного массива, подобного этому "{category:" tennis ", data: res.json ()}"

тогда я хочу получить его без типа Promise

Я попробовал, но он вернулся с Promise Type

const promise = new Promise(function(resolve,reject) {
  fetch("http://localhost:100/api/v1/categories/map").then(response
    => resolve(response.json()))
});





promise.then(value => Promise.all(value.category.map(
  category => {
     return (fetch("http://localhost:100/api/v1/categoriescategory=tennis"))
  }
))
.then(responses => {console.log(responses);
  return Promise.all(responses.map(res=> {
     console.log(res.json()) <- this is not Promise
  return(
  {category:"tennis",data:res.json()}  <- this is  Promise


)
} )
)}))
.then(value=>console.log(value)) // {{category:"tennis",Promise{data:data}} <- i want to unwrap Promise

1 Ответ

1 голос
/ 31 мая 2019

Поскольку fetch возвращает Обещание, и, потребляя это Обещание с .json() (или .text() и т. Д.), Вы получаете еще одно Обещание, вам необходимо дважды позвонить .then;поместите еще одну .then в вашу начальную функцию отображения, точно так же, как вы делаете со своей начальной const promise.Вам также следует избегать явного обещания построения antipattern :

const promise = fetch("http://localhost:100/api/v1/categories/map").then(response => response.json());

promise.then(value => Promise.all(value.category.map(
  category => {
    return fetch("http://localhost:100/api/v1/categoriescategory=tennis")
      .then(response => response.json());
      // ^^^^^^^^^^^^^^^^^^^^^^^^^
  }
))
.then(responseObjects => {
  return Promise.all(responseObjects.map(responseObject => {
    return {
      category: "tennis",
      data: responseObject
    }
  }))
}))
  .then(value => console.log(value))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...