如何抑制警告-未处理的承诺拒绝

时间:2018-09-24 17:37:59

标签: android react-native asynchronous

我正在Android模拟器上测试我的React Native应用。在setState中对诺言调用cancel之后,我正在遵循React Blog作家Jim Sproch的建议,对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);
        });

我通过导航到视图后立即退出视图来测试在Promise链中使用的代码。调用函数maybeSetHistory时,将显示警告消息。我显然不希望在实际的电话上发生这种情况。

我尝试了建议的代码,该代码采用并包装类型为Promise的参数。我尝试切换production模式,然后通过在模拟器上滑动Expo应用程序,将模式Expo切换到production,然后重新启动电话模拟器应用程序Packager 1}},然后按a进行Android仿真。当productionPackager的模式时;尽管如此,仍会显示警告。有没有一种方法可以禁止显示此特定警告消息?我应该担心吗?我是否错误地处理了Promise拒绝?

0 个答案:

没有答案