gpt4 book ai didi

javascript - 在异步 AWS Lambda 函数中使用带有 node-fetch 模块的 node.js 时遇到问题

转载 作者:行者123 更新时间:2023-12-01 16:27:14 24 4
gpt4 key购买 nike

这就是我想要做的事情:我有一个由 webhook 触发的 lambda 函数,该函数将处理该数据并使用它向 api 发出 POST 请求。

我正在使用 Node.js 12 和 node-fetch 模块。

现在该函数被正确触发,但它不会在第一次调用时发送 POST。但是如果我在短时间内重复触发 lambda 函数,第一次之后的请求就会通过。

这是我的 lambda 函数的 index.js 文件中的代码:

const fetch = require('node-fetch');

exports.handler = async (event) => {

sendPost();

const response = {
statusCode: 200,
body: "Ok",
};

return response;
};


function sendPost() {

const url = "http://requestbin.net/r/vjv4mvvj";

const body = {
foo: "foo",
bar: "bar",
baz: "baz"
};

const params = {
method: "POST",
mode: "cors",
headers: {"Content-Type":"application/json"},
body: JSON.stringify(body)
};

fetch(url, params);

}

当我删除 异步 前面(事件) ,然后请求第一次通过,但是首先发送 webhook 的服务器没有得到响应。

所以基本上我需要每次调用函数时发送 POST 并且还能够返回 200 状态码。

我没有太多使用异步的经验,所以我知道它与此有关,但我正在摸不着头脑。

最佳答案

fetch 返回一个 promise ,你需要一个 await .您还需要标记sendPost功能为 async .您还需要处理函数来等待 sendPost功能完成。

const fetch = require('node-fetch');

exports.handler = async (event) => {

await sendPost();

const response = {
statusCode: 200,
body: "Ok",
};

return response;
};


async function sendPost() {

const url = "http://requestbin.net/r/vjv4mvvj";

const body = {
foo: "foo",
bar: "bar",
baz: "baz"
};

const params = {
method: "POST",
mode: "cors",
headers: {"Content-Type":"application/json"},
body: JSON.stringify(body)
};

await fetch(url, params);
}

关于javascript - 在异步 AWS Lambda 函数中使用带有 node-fetch 模块的 node.js 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59098096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com