Являются ли JavaScript вечно ожидающие обещания плохими?

Скажи, у меня есть обещание под названиемmyPromи сказать, что у меня есть обработчики успеха и ошибок под названиемonSuccess а такжеonError.

Всякий раз, когда мое обещание занимает больше 10 секунд, я хочу функциюtimeoutHandler должно быть выполнено, но если это произойдет, ниonSuccess ниonError должно быть выполнено. (Точно так же, если либоonSuccess или жеonError работает, я не хочу, чтобы мойtimeoutHandler быть выполненным.)

Я придумал следующий фрагмент для этого.

new Promise((suc, err) => {
    let outOfTime = false;
    const timeoutId = window.setTimeout(() => {
        outOfTime = true;
        timeoutHandler();
    }, 10000);
    myProm.then(
        (...args) => {
            if (!outOfTime) {
                window.clearTimeout(timeoutId);
                suc(...args);
            }
        },
        (...args) => {
            if (!outOfTime) {
                window.clearTimeout(timeoutId);
                err(...args);
            }
        }
    );
}).then(onSuccess, onError);

Однако, в случае тайм-аута, мое новое определенное обещание будет всегда. Может ли это иметь негативные побочные эффекты? Например, среда выполнения не может очистить объект Promise, потому что он все еще ожидает (или что-то в этом роде).

Ответы на вопрос(2)

Ваш ответ на вопрос