我刚刚从Google Apps Script过渡到node.js和Google Cloud Functions,有一段来自现有帖子的代码我不理解。
在这篇文章中:How to use Google sheets API while inside a google cloud function,@domdomeg.列出了一个从Google Cloud函数调用Google sheets API的代码示例。我已经在一个Google Cloud Function中运行了该代码。
但是,我不理解代码中的特定部分:
// This just prints out all Worksheet names as an example
.then(({ data: { sheets } }) => {
res.status(200).send({ sheets });
这是我不理解的data: { sheets }
部分。我想这是我需要把我的代码写到Google工作表上的地方,但这对我来说有点神秘。我已经够菜鸟了,还不能对原文发表评论。有新手来帮忙吗?
发布于 2019-10-15 05:15:53
这确实是一些复杂的(棘手的)语法...看看我们能不能把它拆开。
首先是.then(...)
。这就是当一个承诺被解决时所说的。then
的参数是一个函数。
在此示例中,函数为:
({data: {sheets}}) => {
res.status(200).send({sheets});
}
如果这令人困惑,可以重写为:
function({data: {sheets}}) {
res.status(200).send({sheets});
}
但是函数参数的这种奇怪之处是什么呢?我们习惯于看到表单的函数:
function(a, b, c) {
...
}
其中a
、b
和c
是参数。在我们的例子中,参数似乎是{data: {sheets}}
...我们如何解析它呢?
答案似乎是一个称为*解构赋值`的ECMAScript6概念。请看这里:
http://es6-features.org/#ObjectMatchingDeepMatching
看起来是:
function({data: {sheets}}) {
...
}
在逻辑上等同于:
function(_tmp) {
let sheets = _tmp.data.sheets;
...
}
最后..。
send({sheets})
在逻辑上是:
send({sheets: sheets})
像往常一样,我可能是错的,所以让我们关注评论,我可以根据进一步的反馈更新或删除这个答案。
https://stackoverflow.com/questions/58387425
复制