[英]node.js callback and recursion
我正在使用google api獲取我郵箱中所有郵件的列表。 API正在對列表進行分頁,並且每次調用它都會返回下一頁,因此我必須以遞歸方式調用它:
const fetch = (cb, next) => {
google.gmail('v1').users.messages.list({
auth: oauth2Client,
userId: 'me',
pageToken: next
}, cb)
}
const store = (err, result) => {
// do something with result and then
if (result.nextPageToken) {
fetch(store, result.nextPagetToken)
}
}
fetch(store)
有沒有更好的方法來避免遞歸,所以我不會破壞堆棧?
代替:
fetch(store, result.nextPagetToken)
您可以使用:
process.nextTick(fetch, store, result.nextPagetToken);
但如果在messages.list()
回調中已經完成了類似的事情,那么甚至可能沒有必要。 除了正確的尾部調用優化之外,JS已經支持並且在6.5.0版本的Node中可以使用--harmony
標志,請參閱:
即使在最古老的Node版本中,也有我的tco模塊可以進行無限遞歸。
我擔心我不知道谷歌API,但一般來說你應該看看Promises:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.