NodeJS'de async/await kullanmaya çalışıyorum ama betiğimde bir sözdizimi hatası var.NoynJS betiği async/await ile sözdizimi hatasına neden oluyor (v7.10.0)
Async/await'in supported naively since Node 7.6 olduğu izlenimindeydim. node -v
çalıştırdığımda v7.10.0
alırım.
İşte index.js
içeriği olan:
async function getValueAsync() {
return new Promise(function(resolve) {
resolve('foo');
});
}
let value = await getValueAsync();
console.log(value);
Ama node index.js
ile bu script çağırmak ne zaman alıyorum: Ben Linux Mint 18.1 çalıştırıyorum
let value = await getValueAsync();
^^^^^^^^^^^^^
SyntaxError: Unexpected identifier
at createScript (vm.js:53:10)
at Object.runInThisContext (vm.js:95:10)
at Module._compile (module.js:543:28)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:427:7)
at startup (bootstrap_node.js:151:9)
.
Komut dosyasını derlemek ve çalıştırmak için nasıl alabilirim? async
fonksiyonları bir söz ile sarılırlar sizi, dönüş değerlerinin beri
void async function() {
let value = await getValueAsync();
console.log(value);
}();
Ve:
ancak [MDN belgeleri] 'ne göre (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await) bir "bekle" işlevi de kullanılabilir Bu bir "Promise" döndürür. Aslında 'async' işlevi bir "vaat" i döndürür. Bu yüzden kafam karıştı. –
tamam, anladım, "bekle" her zaman "uyumsuz" işlevlerine eklenmelidir. Doktora göre. 'Beklenti 'ifadesi,' Vaat'in yerine getirilinceye ya da reddedilene kadar' duraksızlık 'işlevinin yürütülmesine ve yerine getirildikten sonra 'async' işlevinin yürütülmesine devam edilmesine neden olur. Yeniden başladığında, "bekle" ifadesinin değeri, yerine getirilmiş olan "Sözün" ifadesidir. Bu yüzden asla bir üst kademe "beklemesi" beyanına sahip olamam. –