Firebase 为什么这个云功能需要很长时间?

Firebase 为什么这个云功能需要很长时间?,firebase,google-cloud-functions,Firebase,Google Cloud Functions,这是一个非常简单的云函数。它肯定会返回一些东西(“成功”),那么为什么需要60秒以上的时间才能导致超时错误呢 exports.confirmOrder = functions.https.onCall(async (data, context) => { await new Promise((res,rej)=>{ return true; }).then(()=>{ console.log("lllllllllllllllllll

这是一个非常简单的云函数。它肯定会返回一些东西(“成功”),那么为什么需要60秒以上的时间才能导致超时错误呢

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";

      });

当一个可调用的云函数向调用者返回响应时,它就完成了。如果无法同步返回值,则应返回与该值解析的承诺

您的代码不会返回任何响应(既不是值也不是承诺),因此云函数无法知道何时完成。在这种情况下,它允许尽可能长时间运行/配置(默认情况下为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()
    });
});

请注意,
newpromise()
在云函数代码中是非常不惯用的,因为您调用的大多数库/API已经返回了承诺。考虑到代码的性质,我假设您只是在测试承诺是如何工作的。

在您的代码中,我如何向客户端发送一些数据,如“成功”字符串。我认为返回承诺仅限于服务器。如果我返回json对象而不是字符串(此处为“successful”),那么它将正常工作?要将结果发送回调用方,请将
resolve()
替换为
resolve(“successful”)
。好的,我在代码中添加了您的代码,但它对我也不起作用