在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
我是用node
或node --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
我是用node
或node --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笔记本环境的位置。