использование fetch в рефакторинговом коде - PullRequest
0 голосов
/ 16 мая 2018

Мне удалось обернуть голову вокруг Promise из fetch, когда я пишу в один файл, но как только я начинаю разбивать код на несколько файлов, я застреваю. Это случалось пару раз, и я, должно быть, упустил или перенес какую-то концепцию.

Это в контексте node.js.

Я поместил свой код Promise в отдельный файл:

module.exports = function(url, branch) {
  return fetch(url)
  .then( res => res.json())
  // here's the meat and potatoes.
  .then( data => data => Object.keys(data.values).filter( value => value.source.branch === branch))
  .catch( err => console.log(err))
};

Тогда в файле, которым я пользуюсь этой функцией:

const getDescription = require('./get_description');
getDescription(url, branch )
// This is where I want to use this value.
  .then( desc => console.log(desc) )
  .catch( err => console.log(err) );

И это просто выплевывает [Function].

Когда я складываю все это вместе, мне кажется, что я могу получить то, что мне нужно, но я также делаю что-то странное с тем, как вкладываю res.json().then внутрь другого.

fetch(`https://api.bitbucket.org/2.0/repositories/${circle_project_username}/${circle_project_reponame}/pullrequests`, {headers: {Authorization: auth}})
  .then((res) => {
    res.json().then((data) => {
      Object.keys(data.values).forEach(key => {
        if (data.values[key].source.branch.name === branch) {
          console.log(data.values[key].description);
        }
      })
    })
  })
 .catch(res => console.log(res));

1 Ответ

0 голосов
/ 16 мая 2018

Вы возвращаете функцию res.json вместо res.json() обещание

Заменить

.then( res => res.json)

с

.then( res => res.json())

Также

Repalce

.then( data => data => Object.keys(data.values).filter( value => value.source.branch === branch))

с

 .then( data => Object.keys(data.values).filter( value => value.source.branch === branch))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...