最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

在Node.js 7.5上“等待意外的标识符”

IT培训 admin 2浏览 0评论

在Node.js 7.5上“等待意外的标识符”

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

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

但是当我在节点中运行它时,我得到了

await x();
      ^
SyntaxError: Unexpected identifier

我是用nodenode --harmony-async-await运行它还是用我的Mac上的Node.js'repl'运行Node.js 7.5或Node.js 8(每晚构建)。

奇怪的是,相同的代码在Runkit JavaScript笔记本环境中起作用:

我究竟做错了什么?

回答如下:

感谢其他评论者和其他一些研究,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 7.5上“等待意外的标识符”

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

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

但是当我在节点中运行它时,我得到了

await x();
      ^
SyntaxError: Unexpected identifier

我是用nodenode --harmony-async-await运行它还是用我的Mac上的Node.js'repl'运行Node.js 7.5或Node.js 8(每晚构建)。

奇怪的是,相同的代码在Runkit JavaScript笔记本环境中起作用:

我究竟做错了什么?

回答如下:

感谢其他评论者和其他一些研究,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笔记本环境的位置。

发布评论

评论列表 (0)

  1. 暂无评论