我正在 node 中试验await关键字.js.我有一个测试脚本:

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

但当我在node中运行它时

await x();
      ^
SyntaxError: Unexpected identifier

不管我是用node还是node --harmony-async-await运行它,还是在 node 中运行.我的Mac电脑上的js'repl'带有 node .js 7.5或 node .js 8(夜间构建).

奇怪的是,同样的代码在Runkit JavaScript笔记本环境中也能工作:https://runkit.com/glynnbird/58a2eb23aad2bb0014ea614b

我做错了什么?

推荐答案

多亏了其他 comments 者和其他一些研究,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 repl不允许你这么做

await x();

就像RunKit笔记本环境一样.

Node.js相关问答推荐

如何使用jq将依赖项添加到package.json中

MongoDB-如何验证Document字段以仅允许特定的文件扩展名?

编辑Mongoose中的对象嵌套数组

Mongoose:如何在文档中推送到Caped(有限大小,滚动窗口)数组?

Mongoose-如何从父文档填充到子文档

如何防止Socket-io实例化React/Next.js中的两个套接字(当前在服务器*和*客户端实例化)

Mongoose post中间件触发deleteMany

如何获取需要加载cheerio的网站部分数据?

看起来这段代码try GET 请求发送的值变为空白

更新文档数组中的文档 Mongoose

AJAX 和 Node JS:在我的服务器中接收空数据

带权限的机密 Rest-Api - 总是 403 - 我做错了什么?

如何使用 UglifyJS 缩小文件夹中的多个 Javascript 文件?

在 Node.js 与 Cron 作业(job)中设置间隔?

从目录 node Js 中检索文件

使用 Webpack 和 font-face 加载字体

npm 出现无法读取依赖项错误

node.js 模块和函数中this的含义

我可以有条件地将 where() 子句添加到我的 knex 查询吗?

使用 gzip/deflate 压缩的简单 HTTP 请求