javascript - 为什么我无法从 async 修饰的函数中获得预期结果?

标签 javascript node.js async-await

我有一些如下代码

'use strict';
function greeting() {
  console.log('Hello ' + getName());
}

async function getName() {
  return 'Fred';
}

greeting();

我期望输出为 Hello Fred,但它返回给我 Hello[object Promise]。我知道没有必要通过 async 来装饰 getName(),我只是描述我遇到的类似情况。

最佳答案

异步函数必须使用await关键字调用。 async 函数始终返回带有返回值的 Promise,并且 await 从 Promise 中“拉出”值。 await 只能在异步函数内部使用。

async function getName() {
  return 'Fred'
}

async function greeting() {
  console.log('Hello ' + await getName())
}

greeting()
  // while this isn't *required*, it's good practice to always handle promise errors
  .catch(error => console.error(error))

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

关于javascript - 为什么我无法从 async 修饰的函数中获得预期结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48738475/

相关文章:

javascript - 在更改事件上同步两个 paper-input 的值

javascript - jQuery.ajax 返回空数组

node.js - `npm install`在node:10.21.0-jessie-slim Docker Image上的package-lock.json失败

c# - TPL 中断未处理的异常

javascript - 在失败之前轮询结果 n 次(尝试之间有延迟)

javascript - Annyang 将语音转换为文本

javascript - 使用 CoffeeScript 为选择框选择默认值

node.js - typescript :意外的 token 导入

Node.js 在客户端和服务器之间共享 javascript 文件

c# - 异步任务被评估两次