我是node.js的新手和回调的概念。我有Rails,PHP等经验,现在我正在学习node.js。
我想创建一个使用Google GMail API的简单邮件客户端。 示例代码位于:https://developers.google.com/gmail/api/quickstart/nodejs
我想将我的MEAN应用程序的gmail API作为模块使用。我已将快速启动代码放入模型中,并且我可以将我的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对象)进行各种查询(线程,标签......)。
有人能指出一个很好的资源,可以帮助我理解如何解决这个问题吗?
答案 0 :(得分:1)
当您异步工作时,也就是说,您不等待结果,您需要使用一个承诺,即您希望从代码中获得的承诺。承诺先挂起,然后履行或拒绝。 promise需要一个回调函数,即在异步任务完成时执行的函数。
当您计划异步工作流程时,您需要问自己以下问题:
这些问题可帮助您了解异步请求的生命周期。回调是在完成阶段执行的功能。你的回调可以调用任何函数,你只需要在回调内的任务之后做一些事情,而不是在函数调用之后。
答案 1 :(得分:0)