Firebase 为什么这个云功能需要很长时间?
这是一个非常简单的云函数。它肯定会返回一些东西(“成功”),那么为什么需要60秒以上的时间才能导致超时错误呢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
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”)
。好的,我在代码中添加了您的代码,但它对我也不起作用