1) promise 함수를 명시 적으로 반환해야합니다. 상황이 캐치 콜백 내에서 처리 할 수있는 실패 :
fetchDB(key) {
return AsyncStorage.getItem(key).catch(error => console.log(error));
}
fetchDB("username").then(res => alert(res));
2) 포인트 (1) AsyncStorage.getItem
정말 약속을 반환하는 경우에만 작동합니다. 그것이 사실이 아니라면, AsyncStorage.getItem
메소드를 약속 기반으로 업데이트해야합니다. 그 방법에 접근하지 않았거나 만지지하지 않으려면, 문제는 같은 방법으로 fetchDB
기능을 업데이트를 통해도 할 수있다 :
fetchDB(key) {
return new Promise((resolve, reject) => {
try {
AsyncStorage.getItem(key, resolve);
}
catch (error) {
reject(error);
}
})
}
fetchDB("username")
.then(res => alert(res))
.catch(error => console.log(error));
3) 심지어 말을한다는 돈 마지막으로 .catch
이 fetchDB
약속에서 던진 어떤 오류를 처리
fetchDB(key) {
return new Promise((resolve, reject) =>
AsyncStorage.getItem(key, resolve)
)
}
fetchDB("username")
.then(res => alert(res))
.catch(error => console.log(error));
그건 '는 t 시도 - 캐치 인해를 약속 자연을 ES6해야합니다.
'AsyncStorage.getItem'이 (가) 비동기입니까? 어쨌든 콜백 함수의 반환 값은'fetchDB' 함수에서 반환하는 것을 의미하지는 않습니다 ... 그래서 두 가지 문제가 있습니다 ... 비동기 코드를 이해하고 함수가 실제로 아무 것도 반환하지 않는다는 것을 이해합니다 ... 간단하게'return AsyncStorage.getItem (key); '을 시도하십시오. –