我尝试了不同的方法,例如 setttimeout 和 for 循环,但脚本不会触发。
exports.handler = async function (event, context, callback) {
const reqbody = JSON.parse(event.body);
try {
var yd = new URLSearchParams();
yd.append("Author", "thea");
yd.append("Body", reqbody.body);
const postmessageoptions = {
method: 'POST',
headers: {
accept: 'application/json',
'content-type': 'application/x-www-form-urlencoded',
authorization: 'Basic ' + process.env.BASIC_TOKEN_TWILIO
},
body: yd
};
function createCustomTimeout(seconds) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, seconds * 1000);
});
}
async function testing() {
console.log('testing function has been triggered');
await createCustomTimeout(5);
console.log('success');
await fetch('https://conversations.twilio.com/v1/Conversations/' + reqbody.sid + '/Messages', postmessageoptions)
}
testing();
// end post message
return {
headers: {
"content-type": "application/json",
"Access-Control-Allow-Origin": "*",
},
statusCode: 200,
body: JSON.stringify('success'),
};
} catch (error) {
return {
headers: {
"content-type": "application/json",
"Access-Control-Allow-Origin": "*",
},
statusCode: 500,
body: JSON.stringify(error),
}
}
};
我想延迟提取 5 秒,但它返回成功而不触发提取。我可以看到 console.log('success') 在控制台上触发,但在 fetch 上却没有触发。
请帮助我。
testing
是一个 async
函数,但您已将其称为 without await
关键字。因此,一旦调用 return
,程序就会到达 testing()
语句,这将终止 lambda
以及 fetch
请求。
exports.handler = async function (event, context, callback) {
// your code
await testing();
// rest of your code
}