js promise api를 사용하여 refractor에 중첩 된 IF가 많은 코드를 사용하는 방법을 이해하려고합니다. 로컬 스토리지에서 JSON 객체를 가져올 때js를 사용하는 방법 doom의 피라미드를 제거하는 약속
예는 정상적인 코드는
function $storage(key,default) {
let json = localStorage.getItem(key);
if(json === null) return default;
try{ // <-- need try catch in case value was not valid json object
json = JSON.parse(json);
} catch (e) {
json = default;
}
return typeof json === 'object' ? json : default;
}
이 코드의 일기 좋게가 좋지 않다처럼 보일 것이다. 그래서 내가 활용할 수있는 JS 약속 난 예외를 던질 수있는 방법을 캐치 할 수있는 그것을 잡은 있도록 내부에 다음
function $storage (key, default) {
let ret;
let promise = new Promise((y,n) => y(localStorage))
.then(ls => JSON.parse(ls.getItem(key)))
.then(json => typeof json === 'object' ? json : HOW_TO_THROW_ERROR())
//on more validation step if needed
.then(json => typeof json === 'object' ? json : HOW_TO_THROW_ERROR())
.then(valid_json => { return = valid_json })
.catch(error => { ret = default; console.warn('json invalid',e); });
return ret;
}
지금 내가 알고 싶은
로 재 작성 및 기본을 실행 할 수있다 생각?내가 당신이 어떤 오류가 발생하는 키워드 throw
를 사용할 수있는 자바 스크립트의 성능
대안을 공유해 주셔서 감사합니다. 가독성 부족 이외의 첫 번째 예제를 사용하는 단점이 있습니까? –