Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌云功能花费的时间太长_Javascript_Firebase_Quota_Timeoutexception_Google Cloud Functions - Fatal编程技术网

Javascript 谷歌云功能花费的时间太长

Javascript 谷歌云功能花费的时间太长,javascript,firebase,quota,timeoutexception,google-cloud-functions,Javascript,Firebase,Quota,Timeoutexception,Google Cloud Functions,我刚刚开始使用谷歌云功能。他们的行为很奇怪(或者我做错了什么)。 我有下面的函数,它可以在用户对某个项目进行评分后重新计算平均评分 exports.onItemRated = functions.database.ref('/votes_history/{rankingId}/current/{itemId}').onWrite(event => { const ranks = event.data.val(); const itemId = event.params.itemId; c

我刚刚开始使用谷歌云功能。他们的行为很奇怪(或者我做错了什么)。 我有下面的函数,它可以在用户对某个项目进行评分后重新计算平均评分

exports.onItemRated = functions.database.ref('/votes_history/{rankingId}/current/{itemId}').onWrite(event => {

const ranks = event.data.val();
const itemId = event.params.itemId;
const rankingId = event.params.rankingId;

let avg = 0;
let num = 0;
Object.keys(ranks).forEach( (rankerId) => { //sum up all ratings for the item
    avg += ranks[rankerId];
    num ++;
});

avg /= num;

return admin.database().ref(`averages/${rankingId}/${itemId}`).transaction( (curVal) => {
    return {avg, num};
});
}
我在一个非常小的数据量上测试它。比如3级。所以,我相信没有什么需要花很长时间的。但是,以下是日志:

确实,我的“未配置计费帐户。无法访问外部网络,配额受到严重限制。请配置计费帐户以删除这些限制”。 我想弄清楚的是,我的函数中是否有问题,或者只是一些限制。如果有人能解释一下这些限制是如何起作用的,那也太好了

==更新===

感谢您通过将事务包装到自己的承诺中来解决超时问题。看起来像是个虫子


然而,即使是现在,函数执行时间也是非常不可预测的。不像以前那么疯狂,但仍然从50ms(完美)到2k+ms不等。我不明白为什么会有如此巨大的差异。那么该函数执行2000ms的原因是什么呢

请记住,云功能目前正在公测中,因此,工程师们仍在解决一些问题。请注意,目前无法保证性能或可用性。服务退出beta版时应该有保证。您可能看到的是“冷启动时间”——当函数处于空闲状态或函数容器的所有现有实例都在运行时,需要启动一个新实例。这就是为什么在某些调用中可能会看到~2-3而不是ms。当您的函数定期执行时,这种情况会发生得更少。