Как подавить предупреждение - необработанный отказ от обещания - PullRequest
0 голосов
/ 24 сентября 2018

Я тестирую свое приложение React Native на симуляторе Android.Я следую совету автора React Blog, Джима Спроха, отменить setState с отклоненным обещанием после вызова cancel на обещании в componentWillUnmount.Я немного изменил код, чтобы принять функцию, а не обещание:

export const makeCancelableFunction = (fn) => {
    let hasCanceled = false;

    return {
        promise: (val) => new Promise((resolve, reject) => {
            if (hasCanceled) {
                reject({isCanceled: true});
            } else {
                fn(val);
                resolve(val);
            }
        }),
        cancel() {
            hasCanceled = true;
        }
    };
};

Параметр fn - это функция, которая устанавливает состояние.Я получаю предупреждающее сообщение таким образом, как использую его, если и только если обещание отклонено от makeCancelableFunction:

Possible Unhandled Promise Rejection (id: 1):

Вот как я использую функцию:

    this.maybeSetHistory = makeCancelableFunction((results) => {
        this.setState({
            history: results,
        });
    });
/* code hidden */
        }).then((results) => {
            this.maybeSetHistory.promise(results);
        }).catch((reason) => {
            this.props.errorCallback(reason);
        });

Я проверяю код в том виде, в котором он используется в цепочке обещаний, выходя из представления сразу после перехода к представлению.При вызове функции maybeSetHistory появляется предупреждающее сообщение.Я явно не хочу, чтобы это происходило на реальных телефонах.

Я попробовал предложенный код, который принимает и переносит параметр типа Promise.Я попытался переключить режим production, затем перезапустить приложение эмулятора телефона, Expo, смахнув приложение Expo на эмуляторе, переключив режим на production на Packager, затем нажать a дляЭмуляция Android.Когда production - это режим Packager;тем не менее, предупреждение появляется.Есть ли способ подавить это конкретное предупреждающее сообщение?Должен ли я быть обеспокоен?Я неправильно обрабатываю Promise отказов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...