如何在netlify函数中延迟获取脚本?

问题描述 投票:0回答:1

我尝试了不同的方法,例如 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 上却没有触发。

请帮助我。

javascript lambda netlify netlify-function
1个回答
0
投票

testing
是一个
async
函数,但您已将其称为 without
await
关键字。因此,一旦调用
return
,程序就会到达
testing()
语句,这将终止
lambda
以及
fetch
请求。

exports.handler = async function (event, context, callback) {

   // your code

   await testing();

   // rest of your code
}
© www.soinside.com 2019 - 2024. All rights reserved.