[英]How to resolve promises and catch an error
我正在嘗試使用webgazer.js
,在這里我的代碼基本上檢查以查看webgazer
是否已初始化,並且在初始化時它解析了調度動作的promise。 這是可行的,但是例如,如果沒有網絡攝像頭,我需要拋出一個錯誤。 我的代碼中的錯誤永遠不會被調用。
這是我的代碼
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);
});
您需要拒絕才能引發如下異常
const detectCamera = () => new Promise((resolve, reject) => {
const checkIfReady = () => {
if (webgazer.isReady()) {
resolve('success');
} else {
console.log('called');
reject("some error");
}
}
setTimeout(checkIfReady,100);
});
當未初始化Webgazer時,您需要在detectCamera方法中調用reject() ,否則它將在detectJsCamera方法的catch塊中捕獲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.