함수에서 비동기 대기를 사용하여 비동기 함수에서 값을 반환하는 방법은 무엇입니까?
비동기 함수에서 값을 반환하려면 어떻게 해야 합니까?이걸 좋아하려고 했습니다.
const axios = require('axios');
async function getData() {
const data = await axios.get('https://jsonplaceholder.typicode.com/posts');
return data;
}
console.log(getData());
이걸 돌려주는 거지
Promise { <pending> }
할 수 없습니다await
밖에 있는 것async
범위. 예상 결과를 얻으려면 당신은 당신의console.log
비동기적인 IIFE로 즉.
async function getData() {
return await axios.get('https://jsonplaceholder.typicode.com/posts');
}
(async () => {
console.log(await getData())
})()
Working
견본을 보다
에 대한 자세한 정보
부터axios
약속을 돌려줍니다.async/await
에 대해서는 생략할 수 있습니다.getData
기능은 다음과 같습니다.
function getData() {
return axios.get('https://jsonplaceholder.typicode.com/posts');
}
그리고 전에 했던 것과 똑같이 해요.
(async () => {
console.log(await getData())
})()
함수 getData가 약속을 반환합니다.
따라서 다음 중 하나를 수행할 수 있습니다.
await
결과를 얻을 수 있는 기능도 있습니다.하지만, 사용할 수 있다는 것은await
, 당신은 안에 있어야 합니다.async
function, 그래서 당신은 이것을 'wrap'해야 합니다.async function callAsync() { var x = await getData(); console.log(x); } callAsync();
(나는 명확한 이유로 함수의 이름을 지었지만, 이 시나리오에서는 익명 함수 호출을 사용할 것입니다. The Reason의 답변을 참조하십시오.)
아니면
결과를 비동기 함수가 반환하는 일반 약속으로 사용합니다.
사용해야 합니다.then
콜백과 함께:getData().then(x => { console.log(x); });
다른 답변들은 이 문제를 잘 다루었습니다. 하지만 저는 이 문제를 해결하기 위해 노력하고 있습니다.main
글로벌 범위에서 일을 실행하는 것보다 기능합니다. 즉.
async function main(){
let result = await getData();
}
main().catch(console.log);
이것은 당신의 코드를 읽는 누구에게나 이것이 당신의 앱 진입 지점이라는 것을 꽤 명확하게 보여줍니다.
언급URL : https://stackoverflow.com/questions/49938266/how-to-return-values-from-async-functions-using-async-await-from-function
'programing' 카테고리의 다른 글
Angular.js 매개 변수를 사용하여 리소스를 삭제 (0) | 2023.10.21 |
---|---|
mysql 셸 내의 테이블 줄 없이 쿼리 결과 표시(비표 출력) (0) | 2023.10.21 |
jQuery.val() vs.attr("value") (0) | 2023.10.21 |
spring boot application에서 탄력적인 검색 쿼리를 표시하는 방법 (0) | 2023.10.21 |
강제 "자화" 방향 모드 (0) | 2023.10.21 |