为什么此云功能需要很长时间?

时间:2019-01-12 16:14:44

标签: firebase google-cloud-functions

这是一个非常简单的云函数。它肯定会返回某些内容(“成功”),然后说明为什么要花费60秒以上的时间才能导致TimeOut错误

exports.confirmOrder = functions.https.onCall(async (data, context) => { 

    await new Promise((res,rej)=>{

    return true;

    }).then(()=>{

      console.log("llllllllllllllllllllllllllllllllll");

    }).catch((err)=>{

      console.log(err);

    });

    return "successful";

      });

1 个答案:

答案 0 :(得分:0)

可调用的云函数在将响应返回给调用者时完成。如果无法同步返回值,则应返回一个带有该值的承诺。

您的代码不返回任何响应(既不是值也不是诺言),因此Cloud Functions无法知道何时完成。在这种情况下,它可以使其运行尽可能长的时间/已配置(默认为60秒)。

这应该更接近您想要的:

exports.confirmOrder = functions.https.onCall(async (data, context) => { 

    return new Promise((resolve,reject)=>{
      return true;
    }).then(()=>{
      console.log("llllllllllllllllllllllllllllllllll");
      resolve();
    }).catch((err)=>{
      console.log(err);
      reject()
    });
});

请注意,new Promise()在Cloud Functions代码中是非常惯用的,因为您正在调用的大多数库/ API已经返回了promise。考虑到代码的本质,我假设您只是在测试promise的工作方式。