【发布时间】:2021-08-18 17:51:29
【问题描述】:
我正在尝试使用 Promise 在 nodejs 中做一个简单的操作。我有一个数组,其中包含对象。这些对象又包含我想用 GET 请求命中的 url 的查询参数。我希望 get 请求是连续的,因为请求的数量约为 6000。我在互联网上搜索并偶然发现了这篇介绍如何按顺序运行 Promise 的中型文章。 Medium article link
按照方法,我写了以下sn-p-
let itr = set[Symbol.iterator]();//set which contains the objects to be pushed to the function
//that makes the GET request
let runNext = ()=>{
fetchLinks(itr.next().value).then( x =>{ //fetchLinks returns a new Promise which wraps the
//GET request. on successful response, I resolve(1)
runNext();
}).catch(err=>{
console.log("storing");
translateMapAndStore();//fetchLinks returns a reject when an undefined object is detected.
//a global object is storing the response data which is then written to a file.
});
}
runNext();//initiate the recursive promise chain
我现在面临的错误是该进程在准确获取 11 次后终止。我不知道这背后的原因。没有错误被抛出,进程优雅地退出。这里有什么我错过的吗?
【问题讨论】:
-
关于运行时环境的附加信息 - MacOS Big Sur 11.5.1 + 节点版本 15.14.0
-
使用
Symbol.iterator进行异步操作感觉不对。您可能需要Symbol.asyncIterator。还有使用迭代器的目的是什么?为什么不使用await的简单 for 循环?
标签: javascript node.js promise