Javascript 获取Gmail线程主题(以理智的方式)
我正在尝试使用Gmail API检索Gmail帐户中的所有线程主题 这对于Javascript 获取Gmail线程主题(以理智的方式),javascript,gmail-api,Javascript,Gmail Api,我正在尝试使用Gmail API检索Gmail帐户中的所有线程主题 这对于线程来说很容易。list,但它主要获取线程的ID,而不是主题 我找到的唯一方法是使用threads.list,然后为每个线程调用threads.get,并从负载元数据的头中获取主题 显然,这会产生大量API调用,即如果有100个线程,则会产生101个调用 有更好的办法吗 以下是我当前使用的代码: var getIndivThread=函数(线程){ threads.threads.forEach(函数(e){ indivT
线程来说很容易。list
,但它主要获取线程的ID,而不是主题
我找到的唯一方法是使用threads.list
,然后为每个线程调用threads.get
,并从负载元数据的头中获取主题
显然,这会产生大量API调用,即如果有100个线程,则会产生101个调用
有更好的办法吗
以下是我当前使用的代码:
var getIndivThread=函数(线程){
threads.threads.forEach(函数(e){
indivThreadRequst.id=e.id,
gmail.api.users.threads.get(indivThreadRequst).execute(showThread);
});
};
变量indivThreadRequst={
格式:“元数据”,
metadataHeaders:['subject'],
userId:myUserId,
maxResults:1};
var showThread=函数(线程){
console.log(thread.messages[0].payload.headers[0].value);
};
gmail.api.users.threads.list({userId:myUserId}).execute(getIndivThread);
不幸的是,无法通过当前API一次获取多个线程主题。但是,您可以做一些事情来提高性能:
var CONCURRENCY_LIMIT = 5;
function getThread(threadId, done) {
threadRequest.id = e.id;
gmail.api.users.threads.get(threadRequest).execute(function(thread) {
showThread();
done();
});
}
gmail.api.users.threads.list({userId:myUserId}).execute(function(threads) {
function fetchNextThread() {
var nextThread = threads.shift();
nextThread.id && getThread(nextThread.id, fetchNextThread);
}
for (var i = 0; i < CONCURRENCY_LIMIT; i++) {
fetchNextThread();
}
});
var并发限制=5;
函数getThread(threadId,done){
threadRequest.id=e.id;
gmail.api.users.threads.get(threadRequest).execute(函数(线程){
showThread();
完成();
});
}
gmail.api.users.threads.list({userId:myUserId}).execute(函数(线程){
函数fetchnexthread(){
var nextThread=threads.shift();
nexthread.id&&gethread(nexthread.id,fetchnexthread);
}
for(var i=0;i
谢谢。你能用代码详细说明第二点吗?异步获取线程ID的消息,而不是顺序获取它们,从而提高性能,这就是我想你的意思。你是在浏览器中还是在节点中?伙计,这太糟糕了。为了列出gmail中的一些线程,你必须经历所有这些吗?重要的是,只需要得到信息。