반응형
Node.js 7.5에서 '예기치 않은 식별자 대기'
await
Node.js 의 키워드를 실험하고 있습니다 . 이 테스트 스크립트가 있습니다.
"use strict";
function x() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve({a:42});
},100);
});
}
await x();
하지만 노드에서 실행하면
await x();
^
SyntaxError: Unexpected identifier
나는 그것을 실행 여부 node
나 node --harmony-async-await
또는 Node.js를 7.5 Node.js를 8 (야간 빌드) 내 Mac에서 Node.js를 'REPL'에서.
이상하게도 동일한 코드가 Runkit JavaScript 노트북 환경에서 작동합니다 : https://runkit.com/glynnbird/58a2eb23aad2bb0014ea614b
내가 도대체 뭘 잘못하고있는 겁니까?
다른 댓글 작성자와 일부 다른 연구 덕분에 함수 await
에서만 사용할 수 있습니다.async
async function x() {
var obj = await new Promise(function(resolve, reject) {
setTimeout(function() {
resolve({a:42});
},100);
});
return obj;
}
그런 다음이 기능을 Promise로 사용할 수 있습니다.
x().then(console.log)
또는 다른 비동기 함수에서.
혼란스럽게도 Node.js repl은 할 수 없습니다.
await x();
RunKit 노트북 환경과 마찬가지로.
다른 사람들이 말했듯이 비동기 함수 밖에서는 'await'를 호출 할 수 없습니다. 그러나이 문제를 해결하기 위해 await x (); 비동기 함수 호출에서. 즉,
function x() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve({a:42});
},100);
});
}
//Shorter Version of x():
var x = () => new Promise((res,rej)=>setTimeout(() => res({a:42}),100));
(async ()=>{
try{
var result = await x();
console.log(result);
}catch(e){
console.log(e)
}
})();
이것은 Node 7.5 이상에서 작동합니다. 크롬 카나리아 스 니펫 영역에서도 작동합니다.
다른 사람들이 제안한 것처럼 await는 비동기 내부에서 작동합니다. 따라서 다음 코드를 사용하여 사용을 피할 수 있습니다.
async function callX() {
let x_value = await x();
console.log(x_value);
}
callX();
참고 URL : https://stackoverflow.com/questions/42225480/await-unexpected-identifier-on-node-js-7-5
반응형
'Programing' 카테고리의 다른 글
다중 프로젝트의 SBT 테스트 종속성 : 종속 프로젝트에서 테스트 코드를 사용할 수 있도록 설정 (0) | 2020.11.02 |
---|---|
자바 스크립트 네이티브 코드 읽기 (0) | 2020.11.02 |
Kotlin에서 'findViewById'를 사용할 수 없습니다. (0) | 2020.11.01 |
XML에서보다 큼 기호 사용 (0) | 2020.11.01 |
UriTemplate을 사용하여 비 문자열을 WCF RESTful 서비스에 전달할 수 있습니까? (0) | 2020.11.01 |