Javascript 使用异步方法返回的对象
我正在尝试做以下工作,但不幸的是没有成功: 1.读取电子表格并将其作为已解析的对象获取。 2.使用已解析的对象在其中查找特定值。e、 给我一封电子邮件 电子表格作为一个数据库,其动机是确定给定的电子邮件是否存在 显然,我误解了异步方法的使用,因为我不知道如何返回 调用方法:Javascript 使用异步方法返回的对象,javascript,google-api,google-sheets-api,Javascript,Google Api,Google Sheets Api,我正在尝试做以下工作,但不幸的是没有成功: 1.读取电子表格并将其作为已解析的对象获取。 2.使用已解析的对象在其中查找特定值。e、 给我一封电子邮件 电子表格作为一个数据库,其动机是确定给定的电子邮件是否存在 显然,我误解了异步方法的使用,因为我不知道如何返回 调用方法: helpers.read('the-spreadsheet-id', 'Sheet1!A:Z'); @helpers/sheets.js的阅读方法: exports.read = (spreadsheetId, r
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对象或类似解析的数据对象,我应该做什么
提前感谢。要使异步步骤起作用,您必须声明您正在返回一个
承诺
,或者该函数为异步
。Async/await实际上是在幕后使用承诺,但它的语法更简洁
对于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;
}
};
我不使用下划线,所以我不确定您试图返回这里的内容。我假设
数据
是查询的结果,您试图传递值
?helpers.read返回什么?您正在取回写入数据对象吗?您具体卡在哪里了?使用调试器,我似乎没有看到helpers.read返回的任何对象。