使用Google API的nodeJS异步等待

尼尔斯·久比

我正在使用可以正常运行的Google Calendar API。但是我那里的异步方法有问题。

因此,我有以下请求路线可从我的特定用户获取所有事件:

router.get('/api/user/calendar/listEvents', async (req, res) => {
  try {

    const token = "123456789"

      var oAuth = authorizationHelper(token)

         var events = await listEvents(oAuth, req.body.date)

    res.status(200).send(events)
  } catch (e) {
    res.status(400).send("Error Bad Request")
    console.log(e)
  }
})

而我的listEvents方法:

   async function listEvents(auth, date) {
  var events;
  const calendar = google.calendar({ version: 'v3', auth });
   const eventsA = calendar.events.list({
    calendarId: 'primary',
    timeMin: date,
    maxResults: 1,
    singleEvents: true,
    orderBy: 'startTime',
  }, (err, res) => {
    if (err) return console.log('The API returned an error: ' + err);
    events = res.data.items;
    return events
  });
}

listEvents方法运行良好,但是此函数的返回始终是不确定的,因为它不等待从Calendar API返回的响应。

有人知道这个问题的解决方案吗?

索艾尔·阿什拉夫(Sohail Ashraf)

您不能async像在listEvents函数中返回那样函数中返回,它总是会返回undefined;

解决方案:您可以将代码包装在中promise,然后在resolve方法中传递数据

工作示例:

async function listEvents(auth, date) {
  var events;
  const calendar = google.calendar({ version: 'v3', auth });
  return new Promise((resolve, reject) => {
    const eventsA = calendar.events.list({
      calendarId: 'primary',
      timeMin: date,
      maxResults: 1,
      singleEvents: true,
      orderBy: 'startTime',
    }, (err, res) => {
      if (err) {
        console.log('The API returned an error: ' + err);
        reject('The API returned an error: ' + err);
        return;
      }
      events = res.data.items;
      resolve(events)
    });
  });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Web API中正确使用异步/等待

来自分类Dev

异步等待Nodejs API调用

来自分类Dev

使用异步并等待

来自分类Dev

与TcpClient异步等待使用

来自分类Dev

正确使用异步/等待

来自分类Dev

使用Firebase异步/等待

来自分类Dev

使用异步并等待

来自分类Dev

与TcpClient异步等待使用

来自分类Dev

如何使用异步等待

来自分类Dev

如何使用异步/等待在NodeJS中创建TCP客户端?

来自分类Dev

我可以在NodeJS中混合使用回调和异步/等待模式吗?

来自分类Dev

在nodejs中,如何使用异步/等待而不是通过事务中的“然后”来解决承诺?

来自分类Dev

NodeJS:在异步/等待中更好地使用回调函数或同步函数吗?

来自分类Dev

在NodeJS中异步/等待

来自分类Dev

使用异步/等待的最佳实践

来自分类Dev

如何正确使用异步等待

来自分类Dev

在分派上使用异步等待

来自分类Dev

使用异步等待返回查看

来自分类Dev

正确使用等待和异步

来自分类Dev

使用map或foreach异步/等待

来自分类Dev

如何正确使用异步等待

来自分类Dev

使用 setTimeout 连续异步/等待

来自分类Dev

使用承诺替代异步/等待

来自分类Dev

在外部输入/输出API提供其自己的回调委托时使用异步和等待

来自分类Dev

混合使用同步方法时,可以在Web API中实现异步/等待的好处

来自分类Dev

如何使用异步和等待从订阅 API 调用中获取返回值

来自分类Dev

如何在ASP.NET Web API中使用非线程安全的异步/等待API和模式?

来自分类Dev

nodejs异步在createReadStream中等待

来自分类Dev

NodeJS mongo等待/异步功能