실례합니다. 제 정확한 문제를 설명하려고 할 때 좀 더 어색하게 말하게 될 것입니다.약속 상태로 상태를 설정하다
나는 약속을 되 돌린다. 내가 할 그 좀 비동기 코드를 사용, 그리고 올바른 부울 값을 반환하고 있는지 확인하려면하기 때문에
내가 사용
return new Promise(function (resolve, reject) {
로의 기반으로 약속을 해결하거나 거부 할 내가 이것은 내가 특정 기능이 ...있는 내가 "testFunction"그것은 예 경보가 해결되는지이 모두 .. 잘 작동
testFunction()
.then(function() { alert('Yes');
})
.catch(function() { alert('No');
});
, 경우에 이름을 것을 호출 방법 다음이다 .. 내가 통과 루프에 을 찾을 수 경고하지 않습니다. No ...
그러나, 나는 내가 상태를 사용하여 다음과 같이 그렇게하려고 어떻게 든이의 결과를 저장해야합니다 약속이 해결되는지
testFunction()
.then(function() { alert('Yes');
this.setState({
value: true
})
})
.catch(function() { alert('No');
});
는 기본적으로 단순히 사실과 상태를 설정.
그러나 내가 할 때 약속이 해결되지 않은 것처럼 .catch 함수도 실행됩니다.
나는 이것이 일종의 국가 자산이라고 가정하고 있습니까? 나는 이것이 왜 이렇게 작동하는지 이유를 알 수 없다. 이것에 대한 해결책이 있습니까? 감사!
첫 번째 실수에 화살표 기능에 대한 자세한 내용을보실 수 있습니다 당신이 아닌 화살표 함수 내에서'this.setState'를 사용하고 있다는 점이다. '이 '는 당신이 생각하는 것이 아닙니다. – m0meni
'this'는 무엇을 기대합니까? setState를 실행하려고하는 객체는 무엇입니까? - 코드는 그대로이고, this는 정의되지 않았거나'window' 객체입니다 - 둘 다'setState'를 가지고 있지 않습니다. 만약 당신이 catch를'.catch (function (e) {console.log (e);})로 변경하면, 브라우저 개발자 도구 콘솔에 에러가 무엇인지보아야합니다. –
@JaromandaX this is tagged' 원시 '라고 가정합니다. 따라서 React 구성 요소를 가정합니다. – m0meni