我正在移植我在浏览器中编写的一些代码,并发现我似乎无法在NodeJS中创建异步方法
class Test{
async hello(){
return "hello";
}
}
(async function(){
let test = new Test();
let hello = await test.hello();
console.log(hello);
})();
当我执行此操作时,出现错误:
/home/ubuntu/workspace/test.js:2
async hello(){
^^^^^
SyntaxError: Unexpected identifier
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Timeout.Module.runMain [as _onTimeout] (module.js:604:10)
at ontimeout (timers.js:386:14)
at tryOnTimeout (timers.js:250:5)
这在节点中是不可能的,还是我在这里没有错误?
我正在运行Node 8.x
答案 0 :(得分:3)
该代码中发生的错误如下:
let hello = await test.hello();
^^^^
SyntaxError: Unexpected identifier
这是因为您在await
函数之外使用async
关键字。
来自docs:
await运算符用于等待Promise。 只能使用 在异步功能中。
class Test{
async hello(){
return "hello";
}
}
(async() => {
// You can only use `await` inside async function
let test = new Test();
let hello = await test.hello();
console.log(hello);
})();
Is this just not possible in node, or am I don't something incorrect here?
I am running Node 8.x
自7.6版以来,Node支持async/await
,因此您可以自由使用它。
<强>更新强>
如果你得到:
async hello(){
^^^^^
SyntaxError: Unexpected identifier
这意味着您正在运行较旧的节点版本。尝试
console.log(process.version);
并且100%打印低于7.6的版本。
您可能在cli上有节点8.x但在cloud9上没有更新节点,请检查以下问题: