私はnodejs REPLのグローバルスコープでこのようなことをやろうとしています私の理解によれば、次の両方のステートメントが有効です。 ドキュメントを参照
let x = await Promise.resolve(2);
let y = await 2;
ただし、これらのステートメントは両方ともエラーをスローしています。
誰かが理由を説明できますか?私のノードのバージョンはv8.9.4です
await
は、async
というラベルの付いた関数内でのみ使用できるため、これに対処する方法は2つあります。
最初の方法は、次のような自己呼び出し関数を作成することです。
_(async function() {
let x = await Promise.resolve(2)
let y = await 2
console.log(x, y)
})()
_
または2番目の方法は.then()
を使用することです
_Promise.resolve(2).then(async data => {
let x = data
let y = await 2
console.log(x, y)
})
_
それをしてはいけない。 MDN doc は言う
Awaitオペレーターは、Promiseを待機するために使用されます。 これは、非同期関数内でのみ使用できます。
この提案は現在、TC39プロセスのステージ2にあります。 [〜#〜]リンク[〜#〜]
この機能はGoogle ChromeおよびMozilla Firefoxで現在使用できます。コンソールで非同期せずに最上位の待機を使用できます。
ノード10以降、-experimental-repl-awaitを使用してノードプロセスを実行し、レベル待ちを許可できます https://nodejs.org/api/repl.html#repl_await_keyword