一尘不染

Node.js 7.5上的``等待意外标识符''

node.js

我正在尝试使用awaitNode.js中的关键字。我有这个测试脚本:

"use strict";
function x() {
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve({a:42});
    },100);
  });
}
await x();

但是当我在节点上运行它时

await x();
      ^
SyntaxError: Unexpected identifier

是否在Mac上使用Node.js 7.5或Node.js 8(每晚构建)使用nodenode --harmony-async- await在Node.js’repl’中运行它。

奇怪的是,相同的代码在Runkit
JavaScript笔记本环境中也有效:https
://runkit.com/glynnbird/58a2eb23aad2bb0014ea614b

我究竟做错了什么?


阅读 288

收藏
2020-07-07

共1个答案

一尘不染

多亏了其他评论者和其他一些研究await,才可以在一个async函数中使用,例如

async function x() {
  var obj = await new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve({a:42});
    },100);
  });
  return obj;
}

然后,我可以将此功能用作Promise,例如

x().then(console.log)

或在另一个异步功能中。

令人困惑的是,Node.js复制代码不允许您执行

await x();

就像RunKit笔记本环境一样。

2020-07-07