async/await 总是返回承诺

2023-12-15

我正在尝试异步/等待功能。我有这样的代码模仿请求:

const getJSON = async () => {
  const request = () => new Promise((resolve, reject) => (
    setTimeout(() => resolve({ foo: 'bar'}), 2000)
  ));

  const json = await request();
  return json;
}

当我以这种方式使用代码时

console.log(getJSON()); // returns Promise

它返回一个 Promise

但是当我调用这行代码时

getJSON().then(json => console.log(json)); // prints { foo: 'bar' }

它按预期打印 json

是否可以只使用类似的代码console.log(getJSON())?我不明白什么?


Every async函数返回一个Promise object. The await语句运行于Promise,等到Promise resolves or rejects.

所以不,你不能这样做console.log直接在异步函数的结果上,即使您使用await. Using await会让你的函数等待然后返回Promise它会立即解决,但不会解开Promise为你。您仍然需要打开包装Promise由返回async函数,或者使用await或使用.then().

当你使用.then()代替console.log直接 ging ,则.then()方法使 Promise 的结果可供您使用。但你无法得到结果Promise from outside承诺。这是使用 Promise 的模型的一部分。

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

async/await 总是返回承诺 的相关文章

  • Typescript:匿名函数内可能未定义的变量

    太长了 在匿名函数中使用变量之前检查变量仍然 TS 警告变量可能未定义 在下面的代码示例中变量baseDirId检查是否未定义 然后传递给 array map 函数 但 TS 发出警告baseDirId可以是未定义的 Typescript
  • 在 ajax 请求上启用 jQuery contextMenu 项

    我正在尝试更新上下文菜单 http medialize github com jQuery contextMenu docs htmlitem 如果 ajax 请求改变了我的 div 内容 这就是我的意思 我有一个这样的 div div c
  • querySelector 搜索直接子级[重复]

    这个问题在这里已经有答案了 我有一些类似 jquery 的函数 function elem return gt someselector elem 问题是我怎样才能做同样的事情querySelector 问题是 gt 选择器中querySe
  • 如何在 Windows 网络中的 Intranet Web 应用程序中获取用户的用户名

    我内部有一个简单的 HTML 页面 它只显示一个表单并要求用户填写 我想自动捕获Windows域用户名和机器名 并将其与表单中收集的数据一起提交 我可以在客户端这样做吗 HTML JavaScript 或者我被迫在服务器端执行此操作 我还不
  • 指定 HTML5 输入类型 = 日期的值输出?

    我想将本机日期选择器添加到我的应用程序中 该应用程序当前使用遗留的本地系统 日期输入支持尚未广泛普及 但如果我可以基于兼容性提供这两种实现 那就太理想了 有没有办法指定 HTML 日期选择器给出的值的输出 歌剧的默认设置是yyyy mm d
  • 仅从功能区打开一个对话框

    我有一个带有登录按钮的功能区 可打开登录对话框 我想将对话框的数量限制为一个 我正在使用函数 displayDialogAsync startAddress options callback https learn microsoft co
  • 插件 gulp-babel 错误:插件/预设文件不允许导出对象,只能导出函数

    我现在尝试在我的 Ionic v1 应用程序中使用 JavaScript 2015 ES6 包 json name test version 1 0 0 dependencies ionic native deeplinks 4 18 0
  • 修复 Raphaël 路径节点上 Tipsy 工具提示的位置

    这是一个非常具体且有些复杂的问题 所以我设置了一个最小测试用例 http reveal dk 8080 revealit dk tipsytest 在阅读本文的其余部分之前 您可能应该先了解一下 我的页面显示悬停时突出显示区域的图像Raph
  • 为什么Promise中的代码会同步执行? [复制]

    这个问题在这里已经有答案了 在我的项目中 我有一个很长时间运行的操作 所以我决定将其放入Promise因为我认为这样我就可以在里面的代码继续执行其他操作Promise正在跑步 调试的时候发现外面的代码Promise仅当里面的代码执行Prom
  • 如何使用 github 托管外部 CSS 文件?

    我将 css 上传到 github 然后转到网站上的文件并单击 raw 选项 我尝试将其添加到网页中 但 chrome 给出以下错误 资源解释为样式表 但使用 MIME 类型 text plain 进行传输 https raw github
  • C# 5 async/await 线程机制感觉不对?

    为什么让调用线程进入异步方法直到内部 等待 一旦调用异步方法就生成一个线程 这不是更干净吗 这样您就可以确定异步方法会立即返回 您不必担心在异步方法的早期阶段没有做任何昂贵的事情 我倾向于知道某个方法是否要在 我的 线程上执行代码 不管是堵
  • 如何将React JS状态保存到本地存储中

    我不知道如何将 React js 状态存储到本地存储中 import React Component from react import App css import auth createUserProfileDocument from
  • 如何跨多个 React Redux 组件使用 requestAnimationFrame 实现游戏循环?

    努力思考最好的解决办法 我可以使用递归调用requestAnimationFrame有一个游戏循环 export interface Props name string points number onIncrement gt void o
  • 使用 eval 时不会受到 XSS 威胁

    我正在制作 不是现在 但我仍然对这个感到好奇 一款使用 HTML5 和 JS 的游戏 我想要的是人们可以插入自定义脚本 但要安全 function executeCustomJS code eval code bad 当然这段代码非常糟糕
  • 即使我的情况按预期发生变化,Angular ngClass 也不会更新我的课程

    我正在创建的模板中有类似的内容 div class nng 3 div 价值app layout isNavbarFixed等用零或一初始化 并且页面第一次加载时 适当的类被插入到我的div 不过 此后通
  • WebpackError:ReferenceError:Gatsby 上未定义窗口

    我已经在互联网上进行了大量搜索 但无法解决这个问题 我正在使用 Gasby 开发静态页面 但遇到此错误 WebpackError ReferenceError window is not defined 我的线索是 这与我正在使用的引导 模
  • 获取类中的所有静态 getter

    假设我有这个类 我像枚举一样使用它 class Color static get Red return 0 static get Black return 1 有没有类似的东西Object keys to get Red Black 我使用
  • eventSources 到事件 Json,完整日历

    我正在尝试从 eventSources 获取 json 调用到我的事件 我在 eventSources 中返回的 json 是 title Title Test start 1305841052 当我将此字符串传递到事件中时 它会正确显示日
  • HTML5 地理定位 - 在 iOS 上无法始终工作

    目前正在使用 HTML5 地理定位 我已经在所有网络浏览器上测试了它 它似乎工作正常 然而 当我在 iPad 上测试地理定位时 它在 iPad mini 上始终有效 但当我将其放在更大的 iPad iPad 2 上时 位置似乎并不总是有效
  • 突出显示单词并提取其附近文本的函数

    我有一个文本例如 Etiam porta semmalesuada magna mollis euismod 整数取数 ante venenatis dapibus posuere velit aliquet 埃蒂亚姆 门塔 塞姆 male

随机推荐

  • 在 .NET 中处理令人难以置信的大量数据

    我正在努力解决以下问题投影网但我一直遇到一些问题 第一个是在 a 中存储大量元素的问题List
  • 有没有一种简单的方法来删除字符串中的多个空格?

    假设这个字符串 The fox jumped over the log 转变为 The fox jumped over the log 在不拆分和进入列表的情况下实现此目的最简单的 1 2行 是什么 gt gt gt import re g
  • 如何定义函数的返回类型/OutputType

    为什么下面的类型会改变 function SomeFunction SomeParameter return SomeParameter 我想我需要设置一个返回类型 但是如何设置呢 一个例子是使用 NewFolder Join Path C
  • XSLT 转换从元素创建新的 qname

    我需要转换 xml 输出中的数据表 如下所示 C1 列 1 c2 列 2 等
  • Anaconda Navigator 不显示新环境

    当我在 Anaconda Navigator 中添加新环境时 它将创建该环境 但不会在 UI 中显示 我可以通过提示看到环境 所以我知道它已经创建了 它只是不会在用户界面中显示它 我需要做什么才能让它显示在用户界面中 请通过运行更新 Ana
  • 如何在 ClearCase 中按文件扩展名删除文件元素?

    我有很多xxx cmd位于多个文件夹中的文件 例如child1 child2 child3等 他们有一个父文件夹parent 是否有一个cleartool命令可以在parent删除所有的文件夹 cmd所有子文件夹中的文件 不容易 因为在执行
  • 枚举当前 Visual Studio 项目中的所有文件

    我正在尝试编写一个简单的 Visual Studio 2012 扩展 我已经生成了扩展模板 并且可以从工具菜单中打开一个对话框 我想枚举当前打开的项目中的所有文件 然后根据一些规则过滤它们 我正在寻找的是返回 IEnumerable 的代码
  • 无法从我的 Flutter Web 访问 RestAPI (FastAPI) - 跨源请求被阻止

    我有一个 Linux 服务器 我有两个 Docker 容器 在第一个容器中 我部署 Flutter Web 在另一个容器中 我使用 FastAPI 运行 RestAPI 我将两个 Docker 容器设置在同一个网络中 因此通信应该可以正常工
  • 在 page_load 上的内容页上传递母版页控制值

    我在主页上有一个下拉列表 我想在加载内容页面时在内容页面上传递选定的值 我的问题是 只有当我更改下拉列表上的值时 该值才会传递 因此 当页面加载时 我必须从下拉列表中重新选择以捕获下拉列表的值 如果我正在浏览内容页面 则所选值不会在页面加载
  • 使用 Selenium WebDriver 直接操作剪贴板

    是否可以使用 Selenium WebDriver 用一些要粘贴的文本预先填充剪贴板 就像文本已复制到另一个应用程序中一样 最好使用 Python 绑定 不 似乎不是 作为一个browserSelenium 是一种操作工具 旨在执行浏览器特
  • Java连接多个数据库

    我正在创建一个连接到多个数据库的java应用程序 用户将能够从下拉框中选择他们想要连接的数据库 然后 程序通过将名称传递给创建初始上下文的方法来连接到数据库 以便它可以与 Oracle Web 逻辑数据源进行通信 public class
  • 编辑预定的待处理意向

    我编写了一个应用程序 可以在之前选择的预定时间打开 关闭 WiFi 它的工作方式非常简单 从时间选择器中选择时间 然后添加它 它以编程方式从时间选择器获取数据并设置和警报 我首先写下我的活动和广播接收器的代码 在这段代码下面我将写下我的问题
  • instanceof 抛出不兼容的类型

    我最近在以下代码片段中遇到了一个奇怪的编译错误 class A class B extends A class Example class Demo public static void main String args B b new B
  • android gridview 行分隔符/分隔符

    有没有办法在网格视图中的行之间显示 水平 分隔线 我尝试在每个网格项目下方放置一个小分隔符图像 但这不是解决方案 因为当一行未完全填充项目时 它不会跨越整行 有没有办法在每一行之间添加图像 我只能找到改变行间距的方法 如果您使用网格项目的自
  • 格式指定类型“unsigned Short”,但参数类型为“int”

    我有一个扫描字符串的方法 将任何新行转换为 br 对于 HTML 有问题的行是 NSCharacterSet newLineCharacters NSCharacterSet characterSetWithCharactersInStri
  • 如果是负数则删除行

    如果我的 data frame 看起来像 A B C 1 10 James Math 2 1 Tony Science 3 5 Kevin Math 4 11 Chris Math 5 13 Min English 我想删除行 如果A有一个
  • 如何自动化使用 Web 服务的任务

    我有一个winform应用程序需要消耗一个网络服务 Web 服务检查数据库中是否有任何更改 如果数据库中有任何更改 则应通知 winform 应用程序并相应地执行一些任务 我怎么做 我想在我的 winform 应用程序中使用计时器 然后每隔
  • 将 HTML 字符串转换为图像

    我有一个保存 HTML 标记的字符串变量 该 HTML 标记基本上代表了电子邮件内容 现在我想根据该字符串内容创建一个图像 该图像实际上包含 HTML 标记 我不想通过将此内容写入其中来创建 HTML 文件 我只想使用这个字符串创建一个图像
  • CHtmlView Navigate2 和 ExecWB 执行

    这是链接到我之前的问题 我已经成功地从CHtmlView对于我的应用程序生成的报告的新型视图 但我在新视图中发现了一些问题 class CMyHtmlView public CHtmlView protected create from s
  • async/await 总是返回承诺

    我正在尝试异步 等待功能 我有这样的代码模仿请求 const getJSON async gt const request gt new Promise resolve reject gt setTimeout gt resolve foo