【问题标题】:Call another function inside fetch .then - Javascript在 fetch .then 中调用另一个函数 - Javascript
【发布时间】:2019-03-20 08:19:15
【问题描述】:

我对 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) 的函数,第二个函数使用来自第一个函数 (portTod) 的响应。

在我的站点中,我使用了很多 API 调用,所以我想让“feti”函数成为一个可重用的函数。问题是:如何才能从第二个函数访问它,而不在第一个函数中调用第二个函数(就像我现在正在做的那样?)?如果我只是尝试从 fetch 返回结果并在第二个函数中使用它,我会得到一个未定义的响应,正如预期的那样。我相信某种承诺会是理想的,但我找不到任何与我的问题类似的问题,我被困住了。如果有人能指出我正确的方向,那就太好了。只需“搜索这个”就会有很大帮助!

谢谢 :D

【问题讨论】:

    标签: javascript promise fetch


    【解决方案1】:

    只需返回您想要处理的承诺:

    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);

    feti(api_login, tudo).then(data => {
      const resposta = data.qscoluna;
      porTod(resposta);
    });
    

    【讨论】:

    • 使用该代码时出现错误:“未捕获的类型错误:无法读取 HTMLButtonElement.document.querySelector.addEventListener 处未定义的属性 'then'”实际上是我的第一次尝试,因为它只是看到合乎逻辑它会工作......
    • @Mvotre 你确定你添加了return 关键字吗?您可以发布您尝试的确切完整代码吗?
    • 哎呀,我的错。忘记退货了。现在它工作得很好。再次感谢! :D
    猜你喜欢
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 2017-04-20
    • 2019-04-24
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多