반응형
공리와 함께 부울을 반환하는 방법
VueJS에서 나는 공리가 있는 부울을 반환하려고 한다.
allContactsSaved() {
let promise = axios.get('/contacts');
console.log(promise.then(function (response) {
response.data.data.forEach(function(contact) {
if (!contact.saved) {
return false;
}
});
return true;
}));
}
콘솔.log가 막 반환되는 중
약속 {[PromiseStatus]:"pending", [[PromiseValue]]: 정의되지 않음}
하지만 나는 그 대가로 진실과 거짓 중 하나를 원한다.
문제는 VueJS도 아니고 Axios도 아니고...내 생각에 너는 약속을 오해하는 것 같아.
당신의 기능은 비동기적이며 공리뿐만 아니라 문제를 해결하기 위해 Promise를 사용한다.
allContactsSaved()를 true/false로 반환하여 나중에 사용하려면 다음 3가지 옵션을 사용하십시오.
1. 약속
약속을 반환하고 .contactsSaved가 모두 호출되면 다음과 같이 사용하십시오.
// Function
// Returns promise
allContactsSaved() {
let promise = axios.get('/contacts').then(function (response) {
// check if every one is saved
const check = response.data.data.every(function(contact) {
return contact.saved;
});
return check;
}));
return promise;
}
// Using it:
allContactsSaved().then(function(isSaved) {
console.log(isSaved);
});
2. 콜백
나는 첫 번째 옵션이 이것보다 더 좋다고 생각한다.이건 좀 오래된 학교 방식이야.
// Function
// Returns promise
allContactsSaved(callback) {
axios.get('/contacts').then(function (response) {
// check if every one is saved
const check = response.data.data.every(function(contact) {
return contact.saved;
});
if(callback) {
callback(check);
}
}));
}
// Using it with function callback:
allContactsSaved(function(isSaved) {
console.log(isSaved);
});
3. 비동기/대기
이는 ES6/7의 새로운 버전이며, JS 엔진 버전에 따라 다르며, 당신은 트랜스필러가 필요할 것이다.
// Function
// Returns promise
async allContactsSaved() {
const resp = await axios.get('/contacts');
const check = response.data.data.every(function(contact) {
return contact.saved;
});
return check;
}
// Using it, the caller function needs to be async:
async function() {
const result = await allContactsSaved();
console.log(result);
}
사용할 수 있다every
모든 연락처가 저장되었는지 확인
return response.data.ever(contact => contact.saved)
그러나 이것은 당신이 다른 약속을 맺을 수 있다는 약속을 여전히 되돌려 줄 것이다.
allContactsSaved() {
let promise = axios.get('/contacts');
promise.then(function (response) {
return response.data.ever(contact => contact.saved)
}).then((areTheySaved) => {
console.log(areTheySaved);
});
}
참조URL: https://stackoverflow.com/questions/45503682/how-to-return-boolean-with-axios
반응형
'IT이야기' 카테고리의 다른 글
Java에서 null 및 빈 컬렉션을 검증하는 모범 사례 (0) | 2022.04.19 |
---|---|
한 줄에 배열 목록 초기화 (0) | 2022.04.19 |
중단점이 초과되었는데, 어떻게 하면 유효하게 만들 수 있을까? (0) | 2022.04.18 |
C vs C++ struct alignment (0) | 2022.04.18 |
Nuxt, router.js(@nuxt/router)의 vuex 저장소에 액세스 (0) | 2022.04.18 |