代码之家  ›  专栏  ›  技术社区  ›  Andres533

将参数传递给async/await函数将返回“undefined”

  •  0
  • Andres533  · 技术社区  · 2 年前

    将数据发布到API并获得响应时,如果我在fetch调用(body:“XYZ12345”)中硬编码body数据,则效果良好,例如:

                const vatValidationRequest =
                    fetch(
                        '/api/vies/validateVAT.php', {
                            method: 'POST',
                            body: "XYZ12345",
                            headers: {
                                'Content-Type': 'application/text'
                            }
                        })
                    .then((response) => response.text())
                    .then((responseText) => {
                        return responseText;
                    });
    
    
                const validateVAT = async () => {
                    const viesResponse = await vatValidationRequest;
                    console.log(viesResponse);
                };
    
                validateVAT();
    

    但是,如果我尝试将主体数据作为参数(body:vatNumber)传递,validateVAT()函数将返回“undefined”。这是不起作用的:

                const vatValidationRequest = (vatNumber) => {
                    fetch(
                        '/api/vies/validateVAT.php', {
                            method: 'POST',
                            body: vatNumber,
                            headers: {
                                'Content-Type': 'application/text'
                            }
                        })
                    .then((response) => response.text())
                    .then((responseText) => {
                        return responseText;
                    });
                }
    
    
                const validateVAT = async (vatNumber) => {
                    const viesResponse = await vatValidationRequest(vatNumber);
                    console.log(viesResponse);
                };
    
                validateVAT("XYZ12345");
    

    有没有关于如何将参数传递给异步函数的线索?谢谢

    1 回复  |  直到 2 年前
        1
  •  0
  •   Tanay    2 年前

    问题是,您没有从该方法返回响应。你应该这样做:

                const vatValidationRequest = (vatNumber) => {
                    return fetch(
                        '/api/vies/validateVAT.php', {
                            method: 'POST',
                            body: vatNumber,
                            headers: {
                                'Content-Type': 'application/text'
                            }
                        })
                    .then((response) => response.text())
                    .then((responseText) => {
                        return responseText;
                    });
                }
    
    
                const validateVAT = async (vatNumber) => {
                    const viesResponse = await vatValidationRequest(vatNumber);
                    console.log(viesResponse);
                };
    
                validateVAT("XYZ12345");