Promise.all()中的承诺有时会返回未定义的值/ rawler-request包nodejs

时间:2019-06-21 02:22:03

标签: javascript node.js loops promise

我不确定即时通讯是否使用了promise.all,或者我一次用来检索pdf并解析它们的nodejs包是否一次被太多请求所淹没。

https://codesandbox.io/s/sharp-wave-qikvb //这里是代码框

我尝试使用promise.all

let urls = [arrayofURLS];

function pdfData() {   
    return Promise.all(
          urls.map(item => {
            this.crawlPdf(item);
          })
        )
          .then(result => {
        // handle result
          })

} 

这是使用搜寻器包的功能(称为“搜寻器请求”):

    crawlPdf: async function(Url) {

      return new Promise(async function(resolve, reject) {
      let response = await crawler(Url);
      resolve(response.text);
   }

5个请求中有2个通常是不确定的。 但是有时候一切正常。

1 个答案:

答案 0 :(得分:1)

您必须将promise返回给all方法。现在您什么也没返回,所以看起来像Promise.all([undefined, undefined, undefined])

由于看起来可以使用箭头功能,因此只需将大括号切换为括号,或将其放在一行上并完全消除括号-这些格式始终返回函数主体的结果。

urls.map(item => (
  this.crawlPdf(item)
));

urls.map(item => this.crawlPdf(item));

或者保持明确

urls.map(item => { return this.crawlPdf(item) });