首页 > 解决方案 > 如何解决承诺并捕获错误

问题描述

我正在尝试用户webgazer.js我的代码基本上检查以查看是否webgazer已初始化,以及在初始化时它解决了一个调度操作的承诺。但是,如果例如没有网络摄像头我需要抛出错误,则此方法有效。我的代码中的错误永远不会被调用。

这是我的代码

export function detectJsCamera() {
    return async(dispatch) => {
        dispatch({type: types.JS_DETECTING_CAMERA});
        try {
            await detectCamera();
            await dispatch({type: types.JS_CAMERA_DETECTED});
        } catch (error) {
            await dispatch({type: types.CAMERA_DETECTION_FAILED, error: error.message});
            throw error;
        // this.props.history.push('/setup/positioning')
    };
    }
}

const detectCamera = () => new Promise((resolve, reject) => {
    const checkIfReady = () => {
        if (webgazer.isReady()) {
        resolve('success');
        } else {
            console.log('called')
        setTimeout(checkIfReady, 100);
        }
    }
    setTimeout(checkIfReady,100);
});

标签: javascriptreactjsredux

解决方案


您需要拒绝才能抛出如下异常

const detectCamera = () => new Promise((resolve, reject) => {
    const checkIfReady = () => {
        if (webgazer.isReady()) {
            resolve('success');
        } else {
            console.log('called');
            reject("some error");
        }
    }
    setTimeout(checkIfReady,100);
});

推荐阅读