gpt4 book ai didi

javascript - 如何将此代码从同步传输到异步(nodejs)?

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:41 27 4
gpt4 key购买 nike

我是 Node.js 和回调概念的新手。我有 Rails、PHP 等方面的经验,现在正在学习 Node.js。

我想创建一个使用 Google GMail API 的简单邮件客户端。示例代码在这里:https://developers.google.com/gmail/api/quickstart/nodejs

我想将 gmail API 的一部分作为模块提供给我的 MEAN 应用程序。我已将快速入门代码放入模型中,并且可以将 Gmail 帐户的标签打印到控制台。

现在我想要 a) 返回数组(标签、消息等),而不是仅仅打印它们,b) 为不同的用例重用应用程序的部分内容(例如身份验证等)

快速入门文件的结构是这样的:

- read client_secret asynchronously
- callback to authorization
- callback to getNewToken (if needed)
- callback to listLabels (Function that prints the labels)

在同步世界中,我要做的是创建所有这些函数(getClientSecret、getAuthorization、getNewToken、listLables),然后依次调用它们,如下所示:

function printLabels() {
secret = getClientSecret
auth = getAuthorization(secret)
token = getToken(auth)
labels = getLabels(auth)
print labels
}

要获取所有线程,我会以类似的方式执行操作:

function printThreads() {
secret = getClientSecret
auth = getAuthorization(secret)
token = getToken(auth)
threads = getThreads(auth)
print threads
}

现在我尝试以异步方式执行此操作,但我无法理解如何以简单而优雅的方式执行此操作。

我想重复使用始终相同的代码,并将结果(auth 对象)用于各种查询(线程、标签等)。

任何人都可以向我指出一个可以帮助我了解如何解决此问题的好资源吗?

最佳答案

当您异步工作时,即不等待结果,您需要使用 promise ,即您期望从代码中获得的东西。 promise 首先处于等待状态,然后被履行或拒绝。 Promise 需要一个回调,即异步任务完成时将执行的函数。

当您规划异步工作流程时,您需要问自己以下问题:

  • 异步任务应该如何触发? (事件)
  • 任务触发之后、任务开始之前应该发生什么? (初始化)
  • 任务应该是什么? (目的)
  • 应该传递什么? (规范)
  • 应该收到什么? (回应)
  • 任务完成后应该发生什么? (最终确定)

这些问题可帮助您了解异步请求的生命周期。回调是在终结阶段执行的函数。您的回调可以调用任何函数,您只需在回调内的任务之后执行预期的操作,而不是在函数调用之后执行预期的操作。

关于javascript - 如何将此代码从同步传输到异步(nodejs)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35241335/

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