这是一个非常简单的云函数。它肯定会返回某些内容(“成功”),然后说明为什么要花费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";
});
答案 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的工作方式。