2016-11-03 5 views
13

を待って、私はes5に私のコードをコンパイルしたいが、私はasyncまたはawaitを使用していますたびにそのメッセージとコンパイルエラーキーワード:活字体:名前非同期を見つけることができない/私は<code>[email protected]</code>を使用してい

Cannot find name 'await'. 

Heres my libs:dom,es2015es2016es2017

コード例:

let asyncFn =() => { 
    return new Promise((resolve:Function)=>{resolve(2)}) 
} 
// should log `2` 
console.log(await asyncFn()) 

このような事が[email protected]でさえ可能であり、私はそれを試してみたが、どういうわけか、私はとにかく私のコードをコンパイルすることができません。

+0

コードを投稿してください。あなたの関数は 'async'とマークされていますか? –

+0

いいえ、そうではありませんが、スコープに「非同期」としてマークする必要はありません。 afaikは「Promise」のための唯一の合成砂糖です – Roomy

+2

[ドキュメントを読む](https://www.typescriptlang.org/docs/release-notes/typescript-1.7.html):「非同期関数の先頭にasyncキーワードが付いています」 – Amy

答えて

18

asyncFnは、 'async'関数としてマークされた関数の中で使用する必要があります。例:

async someAsyncCode() { 
    let asyncFn =() => { 
     return new Promise((resolve: Function) => { resolve(2); }); 
    } 
    // should log `2` 
    console.log(await asyncFn()); 
} 
+9

ダムなTypeScriptコンパイラでさえ、より良いエラーメッセージを出すことができないことにかなりショッキングです。 '非同期スコープの外では使用できません 'のようなものはうまくいきました。 – user9993

関連する問題