Обещания в Promise.all () возвращают неопределенные иногда / crawler-request package nodejs - PullRequest
0 голосов
/ 21 июня 2019

Я не уверен, что я использую обещание. Все неправильно, или если пакет nodejs, который я использую для получения pdf удаленно и для их анализа, перегружен слишком большим количеством запросов одновременно.

https://codesandbox.io/s/sharp-wave-qikvb // здесь коды и окно

Я пытался использовать обещание. все

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);
   }

2 из 5 запросов обычно не определены.Но иногда все работает oO.

1 Ответ

1 голос
/ 21 июня 2019

Вы должны вернуть обещания методу 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) });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...