为什么声明一个变量使用googlessheets .spreadsheets.values.get只工作作为一个生命?&



上下文:这不是请求帮助,我找到了解决方案,我只是想知道为什么。

工作代码:

var username_result = (await googleSheets.spreadsheets.values.get({
auth,
spreadsheetId,
range: "users!A" + selrow,
})).data;

这将返回预期的对象,并且我可以将其记录到控制台以查看其内容。

如果我删除括号的外部集合,即使它不是IIFE, username_result是未定义的。

我通读了这个问题,它似乎表明googlessheets .spreadsheets.values.get({})。如果data没有包装成IIFE,则不会返回任何值。我看了一下这个函数的文档,它明确地声明它返回一个值范围。

我讨厌实现我不完全理解的代码。为什么这需要一个生命才能工作?

那不是生命。它只是一个分组操作符(括号)。

您需要它,因为await的优先级低于属性访问。所以,你在等待你从get(/*...*)得到什么,然后从await的结果中读取data的属性。如果没有,您将访问承诺get(/*...*/)返回的data属性(它没有一个),并在结果值(undefined)上使用await

所以你需要分组操作符,或者你可以使用解构:

var {data: username_result} = await googleSheets.spreadsheets.values.get({
auth,
spreadsheetId,
range: "users!A" + selrow,
});

…或者只有两个语句:

const result = await googleSheets.spreadsheets.values.get({
auth,
spreadsheetId,
range: "users!A" + selrow,
});
var username_result = result.data;

相关内容

最新更新