使用pLimit时得到undefined Promise数组,求排查问题
问题分析与解决
你的问题出在map函数的箭头函数写法上:当箭头函数用大括号{}包裹代码块时,必须显式用return返回值,否则默认返回undefined。你当前代码里,limit(() => this.getData(item))的结果没被返回,所以map生成的数组全是undefined。
修正方案
有两种解决方式:
方式1:去掉大括号,利用箭头函数的隐式返回
const maxParallelRequests = 1; const limit = pLimit(maxParallelRequests); const promises = items.map(item => limit(() => this.getData(item)) );
方式2:在大括号内显式添加return
const maxParallelRequests = 1; const limit = pLimit(maxParallelRequests); const promises = items.map(item => { return limit(() => this.getData(item)) });
修改后,map会把每个limit(...)返回的Promise收集到数组里,promises就会是包含60个有效Promise的数组了。
内容的提问来源于stack exchange,提问作者chovy
相关产品推荐
相关产品推荐

