等待异步函数结果未定义

2023-12-29

我在使用 Node.js 进行异步/等待时遇到问题。当我尝试这个时:

function Read_Json_File() {
   fs.readFile('import.json','utf-8',(err, data) => {  
       if (err) throw err;
       json_data = JSON.parse(data);

       return json_data;

   });
}

async function run_demo() {
    let get_json_file = await Read_Json_File();
    console.log(get_json_file);
}

run_demo();

它返回未定义的而不是文件中的 JSON。为什么不等待文件读取完成?


你没有返回任何东西Read_Json_File,因此你得到了未定义的——你从回调中返回数据,但不会产生任何结果。相反,要使用 async/await,您需要承诺fs.readFile因为还没有。然后你就可以使用 async/await:

function readJSONFile() {
  return new Promise((resolve, reject) => {
    fs.readFile('import.json', 'utf-8', (err, data) => { 
      if (err) reject(err);
      resolve(JSON.parse(data));
    });
  });
}

Await 需要实际的promise等待。它的作用是返回一个使用await 的承诺。因此,我们等到调用resolve- 当我们完成加载 JSON 时会发生这种情况:

let json = await readJSONFile();
console.log(json);

这里我们调用readJSONFile。这会返回一个 Promise,该 Promise 在 JSON 文件加载完成时解析,并允许看似同步执行异步代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

等待异步函数结果未定义 的相关文章

随机推荐

  • Java程序运行一段时间后变慢

    我有一个java程序 它是一个典型的机器学习算法 通过一些方程更新一些参数的值 for int iter 0 iter lt 1000 iter 1 Create many temporary variables and do some c
  • 用于重载 UI 的 Vaadin 替代方案

    目前我正在基于以下内容编写Web应用程序Vaadin http vaadin com 我对学习周期以及简单的 UI 设计方式感到非常满意 Vaadin 的总体优点是 面向 Java 用户的 本机 UI 编程 组件层次结构 事件侦听器 拖放
  • 将选择设置为范围

    有人可以暗示我在这里可能做错了什么吗 现在我正在有效地尝试执行 Ctrl A 命令来对 vba 中的数据块进行全选 然后我希望将该选择保存为一个范围 以便稍后使用 Dim rngAdData As Range Range A1 Select
  • flutter dart JsonSerialized 带有继承类

    我有以下两个类 其中一个类是从另一个类扩展的 如下所示 JsonSerializable nullable true class Response final String responseCode final String respons
  • qemu-x86_64:无法打开“/lib64/ld-linux-x86-64.so.2”:没有这样的文件或目录

    我在 M1 MacOS 上有一个 Rancher Desktop docker 当我尝试在 dockerfile 下构建时 我收到如下错误 这是我尝试构建图像的命令docker build t te grafana dashboards t
  • 启用 Java 允许过期证书

    是否有任何命令行标志可以使 Java 允许过期的证书 现在 由于证书已过期 我收到以下异常 Caused by java security cert CertificateExpiredException NotAfter PAST DAT
  • 在 WPF 中将整数转换为颜色

    如何在WPF中将整数转换为颜色 例如 我想将 16711935 转换为颜色 如何在 Windows 窗体 WPF 中执行如下操作 myControl Background Color FromArgb myColorInt Use the
  • 在指针列表中查找一个项目

    我试图了解如何使用 std find 在 C 中的指针列表中查找项目 如果我有例如 std list
  • UIPickerView 禁用行选择

    我想禁用我的某些行的选择UIPickerView 就像在倒计时器中一样 您尝试选择 0 它不会让您选择 并且会滑回到 1 或者您如何限制倒数计时器中的日期Date Picker 如何禁用 a 中的行UIPickerView In UIPic
  • Symfony 如何删除文件

    为什么我不能在 Symfony 中使用 unlink 我已经尝试过这个 unlink Applications XAMPP xamppfiles htdocs symfonydev web account assets data suppl
  • 在 xaml 上设置 GroupStyle 内部样式

    我正在尝试为 ContextMenu 设置默认样式 并且我想在样式内设置默认 GroupStyle ContextMenu 像这样的事情
  • Qt C++ 在 GUI 线程之外显示图像(Boost 线程)

    我正在开发一个C 库 使用VS2015通过Qt实现其接口 在图书馆方面 3增强线程连续加载 3 个文件夹中的图像 我正在尝试以 3 种不同的方式显示这些图像QLabel 或同等学历QWidgets 所以线程体由这个功能组成 特别是通过利用设
  • Windows 上的 Makefile 干净

    我现在正在学习如何使用 makefile 我制作了以下 makefile 我在 Windows 上使用 Visual Studio 命令行编译器 CC cl CFLAG EHsc test database exe composer obj
  • 如何从 LocalDate 和 LocalDateTime 中提取纪元?

    如何提取纪元值Long来自实例LocalDateTime or LocalDate 我试过了 以下 但它给了我其他结果 LocalDateTime time LocalDateTime parse 04 02 2014 19 51 01 D
  • CSS:动画与过渡

    我了解如何执行 CSS3过渡 https developer mozilla org en US docs Web CSS CSS Transitions Using CSS transitions and 动画 https develop
  • Rails 3 自动添加 X-UA-Compatible 标头?

    如果您使用 IE8 Rails 3 会自动添加标头吗 我看到 X UA Compatible 的元标记设置为 IE 8 0000 它扰乱了我的观点之一 我似乎找不到其他任何可以做到这一点的东西 所以我想我应该问这里的大脑 谢谢 鲁普里克特
  • 使用 scipy、numpy、python 等进行 sigmoidal 回归

    我有两个变量 x 和 y 它们彼此之间存在某种 S 型关系 并且我需要找到某种预测方程 使我能够在给定 x 的任何值的情况下预测 y 的值 我的预测方程需要显示两个变量之间的 S 形关系 因此 我不能满足于产生一条直线的线性回归方程 我需要
  • AbcPdf - 未应用 CSS 的文档

    这可能更多是一个技术支持问题 但我想知道是否有其他开发人员遇到过这种情况 我在 ASP NET 代码中使用 Abcpdf 从 HTML 生成 PDF 它工作正常 但一名用户生成的 PDF 没有应用 CSS IE8 Adobe Acrobat
  • 如何将文本区域数据发送到另一个页面?

    我对这种事情很陌生 我需要将 3 个文本区域中的数据提交到另一个页面 我怎么做 附 如果可以的话 我会使用输入 您需要使用表单创建页面 例如将其命名为 form html 使用此代码例如
  • 等待异步函数结果未定义

    我在使用 Node js 进行异步 等待时遇到问题 当我尝试这个时 function Read Json File fs readFile import json utf 8 err data gt if err throw err jso