gpt4 book ai didi

javascript - 使用异步方法返回的对象

转载 作者:行者123 更新时间:2023-12-02 23:13:10 24 4
gpt4 key购买 nike

我正在尝试执行以下操作,但不幸的是没有成功:1. 读取电子表格并将其作为解析对象获取。2. 使用解析后的对象查找其中的特定值。例如电子邮件。

电子表格充当数据库,其动机是确定给定的电子邮件是否存在。

显然,我误解了异步方法的使用,因为我不知道如何返回。

调用方法:

helpers.read('the-spreadsheet-id', 'Sheet1!A:Z');

读取方法@helpers/sheets.js:

    exports.read = (spreadsheetId, range) => {
const sheets = google.sheets({ version: 'v4', auth: oAuth2Client });

return sheets.spreadsheets.values.get({
spreadsheetId,
range,
})
.then(_.property('data.values'));
};

为了获取 json 对象或类似解析的数据对象以继续在调用方法中使用,我应该做什么?

提前致谢。

最佳答案

要使异步步骤正常工作,您必须声明您要返回一个 Promise 或该函数是 async。 Async/await 实际上在底层使用了 Promise,但它是一种更简洁的语法。

对于Promise版本,你必须使用resolve函数返回你想要的值,并使用reject函数抛出错误.

exports.read = (spreadsheetId, range) => {
return new Promise((resolve, reject) => {
const sheets = google.sheets({ version: 'v4', auth: oAuth2Client });

sheets.spreadsheets.values.get({
spreadsheetId,
range,
})
.then(data => {
resolve(data.values);
})
.catch(err => reject(err));
});
};

当您使用 async/await 时,您可以将查询包装在 try/catch 中,并在失败时抛出错误。

exports.read = async (spreadsheetId, range) => {
const sheets = google.sheets({ version: 'v4', auth: oAuth2Client });
try {
const data = await sheets.spreadsheets.values.get({
spreadsheetId,
range,
})
return data.values;
} catch(err) {
throw err;
}
};

我不使用下划线,所以我不确定您想在此处返回什么。我假设 data 是查询的结果,而您试图传递 values

关于javascript - 使用异步方法返回的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57261573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com