Вызовите другую функцию внутри fetch .then - Javascript - PullRequest
0 голосов
/ 15 октября 2018

Я довольно новичок в ES6 (раньше работал с Jquery и так называемым адом обратного вызова).Я получил этот код (работает):

    feti(api_login, tudo);

    function feti(caminho, dados) {
      fetch(caminho, {
      method: 'POST',
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify(dados)
      })
      // captura o erro 
      .then(erroAPI)
      // converte o sucesso em JSON
      .then(response => response.json())
      // disponível para uso
      .then((data, outraFunc) => {
        resposta = data.qscoluna;
        porTod(resposta);
      });
    }

    function porTod(valor){
      let api_login_suc = valor[0];
      salvaTudo(api_login_suc);
    }

Первая функция - та, которая использует fetch (feti), а вторая использует ответ от первой функции (porTod).

В моемсайт, я использую множество вызовов API, поэтому я хотел бы сделать функцию "feti" повторно используемой функцией.Вопрос в том, как я могу сделать его доступным из второй функции, не вызывая вторую функцию внутри первой (как я делаю сейчас?)?Если я просто попытаюсь вернуть результат из fetch и использовать его во второй функции, я получу неопределенный ответ, как и ожидалось.Я полагаю, что какое-то обещание было бы идеальным, но я не мог найти подобный вопрос к моей проблеме, и я застрял.Если кто-то может указать мне правильное направление, было бы неплохо.Просто «поиск это» очень поможет!

Спасибо: D

1 Ответ

0 голосов
/ 15 октября 2018

Просто верните обещание, которое вы хотите обработать:

function feti(caminho, dados) {
  return fetch(caminho, {
    method: 'POST',
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(dados)
  })
  // captura o erro 
  .then(erroAPI)
  // converte o sucesso em JSON
  .then(response => response.json())
}

Тогда вместо того, чтобы звонить только feti(api_login, tudo); do

feti(api_login, tudo).then(data => {
  const resposta = data.qscoluna;
  porTod(resposta);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...