2017-12-05 6 views
0

이 작동 :비동기/await를 : 기능의 배열 값에 액세스 할 수있는 것은 직접

var getArray = function(id) { 
 
    return [1, 2]; 
 
} 
 

 
console.log(getArray()[0]); // returns 1

이 작동하지 않습니다 :

var getArray = async function(id) { 
 
    return [1, 2]; 
 
} 
 

 
console.log(await getArray()[0]); // syntax error

을 왜? async/await 구문을 어떻게 변경하여 작동합니까?

+0

당신은''비동기 function'의 await' 외부에서 사용할 수없는 함수 내에서 try/catch을 사용할 수 있습니다. getArray를 호출 할 때마다 async를 호출한다. – Bergi

답변

1

다른 async 함수에서 await 키워드를 사용하면 - (await getArray())[0]을 통해 원하는 결과를 얻을 수 있습니다.

async 기능을 다른 async 기능에 사용하지 않는 경우 then을 호출하는 간단한 약속 기능처럼 사용해야합니다.

당신이 await를 사용하려면

var getArray = async function(id) { 
 
    return [1,2]; 
 
} 
 

 
getArray().then(res => console.log(res[0])).catch(err => {/* ... */});

, 당신은이 논리를 할 것입니다 그냥 호출되는 또 다른 래퍼 async 기능이 필요합니다. 또한 당신은

var getArray = async function(id) { 
 
    return [1,2]; 
 
} 
 

 
async function printFirst() { 
 
    try { 
 
    const first = (await getArray())[0]; 
 
    console.log(first); 
 
    } catch(e) { 
 
    
 
    } 
 
} 
 

 
printFirst();

+0

async/await를 사용하고 싶다. then. – Kinesias

+0

업데이트 된 답변보기. 또한 대답을주의 깊게 읽으십시오. 나는 당신이'await'를 사용할 수있는 곳을 작성했습니다 –

+0

@SurenSrapyan'.catch' 세트가 없다면 잡히지 않은 에러에 대한 노트를 추가해야합니다. – RyanZim