当前位置: 首页 > 面试题库 >

带有异步/等待的NodeJS脚本导致语法错误(v7.10.0)

卢涵畅
2023-03-14
问题内容

我正在尝试在NodeJS中使用async / await,但是我的脚本抛出了语法错误。

自从Node 7.6以来,我一直很自然地支持
async / await 。当我跑步时node -v我得到v7.10.0

以下是内容index.js

async function getValueAsync() {
    return new Promise(function(resolve) {
        resolve('foo');
    });
}

let value = await getValueAsync();
console.log(value);

但是,当我调用此脚本时,node index.js我得到:

let value = await getValueAsync();
                  ^^^^^^^^^^^^^
SyntaxError: Unexpected identifier
    at createScript (vm.js:53:10)
    at Object.runInThisContext (vm.js:95:10)
    at Module._compile (module.js:543:28)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.runMain (module.js:605:10)
    at run (bootstrap_node.js:427:7)
    at startup (bootstrap_node.js:151:9)

我正在运行Linux Mint 18.1。

如何获得我的脚本进行编译和运行?


问题答案:

await仅在内部async函数中有效,因此,例如,您需要一个异步IIFE将代码包装为:

void async function() {
  let value = await getValueAsync();
  console.log(value);
}();

而且,由于async函数的返回值由Promise包裹,因此可以将getValueAsync其简化为:

async function getValueAsync() {
  return 'foo';
}

或者不要将其标记为async并从中返回承诺:

function getValueAsync() {
  return new Promise(function(resolve) {
    resolve('foo');
  });
}


 类似资料:
  • 问题内容: 我们如何才能在传递给事件发射器的回调中结束函数 而又不使事件发射 器 散布 ? 另外,无需使用 外部模块 ,只需使用普通的 NodeJS 7.x / 8.x (支持 Es6 语法和。 我们基本上希望将an 与事件发射器混合使用,以便在事件发射器发出信号时解析它。 另外请记住,在使用其他异步功能完成之前,我们不会从事件发射器开始。 如果我们有一个“新的Promise(…)”,我们将调用r

  • 我遇到了一些使用c#的/关键字进行异步编程的最佳实践(我是c# 5.0的新手)。 给出的建议之一如下: 稳定性:了解您的同步上下文 ...一些同步上下文是不可重入的和单线程的。这意味着在给定时间只能在上下文中执行一个工作单元。这方面的一个例子是Windows UI线程或ASP.NET请求上下文。在这些单线程同步上下文中,很容易死锁。如果您从单线程上下文中生成一个任务,然后在上下文中等待该任务,您的

  • 问题内容: 我认为我对 .NET 的经验可能会影响我的理解,因此我想一些代码示例: 我正在尝试让快速控制器在返回响应之前等待5秒: 该代码不起作用,浏览器不断加载和加载,从不显示任何内容。 我基于此SO答案构建的函数以及控制器方法,是基于(对)其工作原理的(错误的)理解,因此我需要进行一些澄清和更正: 1.我应该什么时候使用? 据我了解,您应该在函数调用之前使用。这样对吗?另外,为什么我可以在返回

  • 我试图在react/electron项目中使用async/await,但它不起作用。我想要的是获取docker容器状态列表。但是安慰。日志(列表)返回未定义的。 有人能帮我吗?:)

  • 在实际应用中,我对 C# 中的异步和 await 方法进行了说明。请考虑以程,这是工作代码的简单版本: 助手.cs 功能控制器.cs processing.js 现在,问题是第三方服务的所需时间更少(例如:2秒),而所需的时间更多(例如:100秒)。进行两个ajax调用并使用异步和等待是为了呈现自我。屏幕上显示数据1,不要等到自己。Data2已被检索。不幸的是,这种情况没有发生,我必须等待100秒

  • 我正在尝试将PSK与mbedtls库与SGX结合使用。没有PSK,连接工作正常。 以下是相关的客户端代码: 我有openssl测试服务器运行: 服务器接收连接并交换PSK消息,但是在解密点我收到以下错误: 我还尝试将更改为不同的密码,但仍然是相同的错误。当完全省略密码时,连接正常,但没有执行PSK!?