Не удается повторить попытку с экспоненциальным возвратом npm

#javascript

Вопрос:

Узел, как вы можете видеть, я пытаюсь вызвать тот же URL-адрес при отсутствии ответа. Я делаю здесь что-то не так

 import * as request from 'request';

var url = 'https://www.abcxyz.com';

export class ServiceClass {
    public getRequest(): any {
        request.get(url, null, (error: any, meta: any, response: any) => {
            console.log("1111", response);
        })
    }

}

import { ServiceClass } from './GithubApiService';
import { backOff } from "exponential-backoff";

const service = new ServiceClass();

async function test() {
    const response = await backOff(() => service.getRequest(),
        { numOfAttempts: 3, maxDelay: 2000, retry: (e: any, attemptNumber: 1) => true })
};

test();
 

Ответ №1:

На основе https://www.npmjs.com/package/exponential-backoff документы ваш GetRequest не возвращает значение обещания, и должен, поэтому попробуйте сделать это так:

 export class ServiceClass {
    public getRequest(): any {
        return new Promise((resolve, reject) => {
          request.get(url, null, (error: any, meta: any, response: any) => {
            if (error) return reject(error);
            resolve(response);
          });
        })
    }
}
 

Комментарии:

1. Как мы можем проверить, были ли начаты повторные слушания? Потому что я вижу, что запрос отклоняется с первой попытки

2. Изложите там некоторую логику, например console.count('request'); , перед тем, как сделать запрос