J'essaie de faire quelque chose comme ça sur portée globale dans nodejs REPL. Selon ma compréhension, les deux déclarations suivantes sont valables. voir la documentation
let x = await Promise.resolve(2);
let y = await 2;
Cependant, ces deux instructions génèrent une erreur.
Quelqu'un peut-il expliquer pourquoi? ma version de noeud est v8.9.4
await
ne peut être utilisé que dans une fonction étiquetée async
, il y a donc deux façons de l'aborder.
La première façon consiste à créer une fonction auto-invoquée comme celle-ci:
(async function() {
let x = await Promise.resolve(2)
let y = await 2
console.log(x, y)
})()
Ou la deuxième façon consiste à utiliser .then()
Promise.resolve(2).then(async data => {
let x = data
let y = await 2
console.log(x, y)
})
Tu ne peux pas faire ça. doc MDN dit
L'opérateur d'attente est utilisé pour attendre une promesse. Il ne peut être utilisé qu'à l'intérieur d'une fonction asynchrone.
Cette proposition est actuellement à l'étape 2 du processus TC39. LIEN
Vous pouvez utiliser cette fonctionnalité dans Google Chrome et Mozilla Firefox à partir de maintenant. Vous pouvez utiliser le niveau supérieur attendre sans async dans la console.
depuis le noeud 10, vous pouvez exécuter le processus de noeud avec --experimental-repl-wait pour autoriser le niveau d'attente https://nodejs.org/api/repl.html#repl_await_keyword