2017-05-21 20 views
5

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:

cevap

6

await ihtiyacınız böylece, örneğin, bir zaman uyumsuz IIFE kodunuzu sarmak için, async işlevleri içinde geçerlidir

async function getValueAsync() { 
    return 'foo'; 
} 

Ya async olarak işaretlemek yoktur ve ondan bir söz dönmek: sadece bu kadar getValueAsync kısaltabilir

function getValueAsync() { 
    return new Promise(function(resolve) { 
    resolve('foo'); 
    }); 
} 
+0

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ı. –

+0

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. –

İlgili konular