在异步函数中返回等待值就是返回一个承诺

2023-12-03

在 Javascript 中,我试图从异步函数返回等待结果。看来,如果我在异步函数中使用该结果,那么一切都会正常工作,它会被视为resolve()参数,并且一切都很好。但是,如果我尝试返回结果,即使存在等待语句,它也会被视为回调。

例如(在异步函数中使用等待结果):https://jsfiddle.net/w7n8f7m7/

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<input type="text" id="test">

function retPromise() {
  return new Promise((resolve, reject) => resolve('Hello'));
}

async function putText() {
  let result = await retPromise();
  $("#test").val(result);
}

putText();

与返回值并在异步函数外部使用它相比:https://jsfiddle.net/hzoj2zyb/

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<input type="text" id="test">

function retPromise() {
  return new Promise((resolve, reject) => resolve('Hello'));
}

async function putText() {
  let result = await retPromise();
  return result;
}

$("#test").val(putText());

为什么等待在第一个小提琴中正确返回执行的承诺,但在第二个小提琴中却没有正确返回?是否因为jquery语句位于异步函数范围内,所以它可以正常使用?


From async_function MDN :

返回值

一个 Promise,将使用异步函数返回的值进行解析,或者通过从异步函数内部抛出未捕获的异常来拒绝。

So putText()不返回解析值retPromise()但返回一个将用该值解析的承诺,因此您必须使用.then(填满后)或.catch(当被拒绝时)访问该内容。

function retPromise() {
  return new Promise((resolve, reject) => resolve('Hello'));
}

async function putText() {
  let result = await retPromise();
  return result;
}

putText().then( result => $("#test").val(result) )
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.1/jquery.min.js"></script>
<input type="text" id="test">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在异步函数中返回等待值就是返回一个承诺 的相关文章

随机推荐

  • objectAtIndexedSubscript 在 IOS5 中可用吗?

    文档称它在 MacOS 1 08 中可用 那么故事是怎样的呢 iOS5呢 这是一个非常重要的选择器 因为 self 5 实际上会变成 self objectAtIndexedSubscript 5 除非我遗漏了一些东西 在 NSOrdere
  • 如何使用初始值设定项列表构造 std::array 对象? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使用初始化器列表初始化成员数组 您可以使用初始值设定项列表构造 std array std array
  • UIDatePicker 设置最大日期

    我使用此代码来阻止用户超出我设置的限制 在视图中确实加载了 NSDate Date NSDate date DatePickerForDate setMinimumDate Date DatePickerForDate setMaximum
  • JavaScript forEach 回调

    我正在深入研究 Javascript 回调之类的东西 我遇到了 forEach 函数 函数说明了一切 循环遍历列表中的每个对象 当我查看文档我看到以下语法 arr forEach callback thisArg 并且文档中还提到了参数 c
  • I18N 基本设计规范

    我是 RSpec 的新手 正在尝试编写一个简单的测试来显示 Devise 正在工作 我选择了一个随机页面 并想要编写一个测试来显示未登录的用户被重新重定向到 users sign in describe OrgsController do
  • 如何在 Python 中生成动态(参数化)单元测试?

    我有某种测试数据 想为每个项目创建一个单元测试 我的第一个想法是这样做 import unittest l foo a a bar a b lee b b class TestSequence unittest TestCase def t
  • R,选择降雨事件并根据时间序列数据计算降雨事件总数

    这是我试图让代码执行的操作 识别数据集中独特的降雨 事件 我想从赛事之间的 6 小时禁赛期开始 我的攻击计划是创建一个列 其中包含事件的独特 标志 事件标志或 ID 可以是事件的开始时间戳或只是 n 1 最后一个标识符 1 1 1 1 2
  • SpriteKit 缺少线性变换矩阵

    有谁知道如何改造 rotate scale skew 使用变换矩阵的 SpriteKit 节点 在 Spritekit API 中找不到对此的任何支持 正如所提到的雾大师 您可以将 SKEffectNode 与 CIFilter 一起使用
  • QGLWidget 在 Windows 7 中显示为黑色

    我使用 Visual Studio 2010 在 Windows XP Qt 4 7 2 中编写并测试了一些代码 然后在另一台安装了 Windows 7 的计算机上进行了尝试 该程序打开一个 QDialog 并创建一个 QGLWidget
  • 如何在 JavaScript 中获取日期时间?

    如何在 JavaScript 中获取格式为 31 12 2010 03 55 AM 的日期时间 从语义上讲 您可能正在寻找一句话 new Date toLocaleString 它格式化用户区域设置中的日期 如果您确实正在寻找格式化日期的特
  • 更改php中的日期时间格式

    这是格式 d m Y H i s 15 11 2008 7 16 09 我想更改为这种格式 Y m d H i s 2008 11 15 07 16 09 尝试了 strtotime 函数 但它将 m 视为 d 将 d 视为 m 帮助 ph
  • VBA For循环不退出

    我正在循环遍历表的行并在不满足某些条件时删除行 由于某种原因 我的 for 循环即使完成也不会退出 我究竟做错了什么 lastr Range a2 End xlDown Row For r 2 To lastr If Cells r 1 V
  • 如何在 Windows 上强制 printf 输出 [-]inf 或 [-]infinity?

    C99标准说 表示无穷大的双参数被转换为以下之一 styles inf 或 infinity 实现的样式是 实现定义的 第 278 页第 7 19 6 1 节 不幸的是在 Windows 上 printf f n 1 0f 0 0f 产生
  • 如何断言 Iterable 包含具有特定属性的元素?

    假设我想使用以下签名对方法进行单元测试 List
  • 无法通过 Java 6 中的 jconsole 连接到 Tomcat MBean 服务器

    我用的是vista机器 我使用以下选项启动了 tomcat 5 5 27 CATALINA OPTS Dcom sun management jmxremote port 9003 Dcom sun management jmxremote
  • 媒体播放器混响不起作用

    我试图通过在输出混合 音频会话 0 上创建混响来将混响效果应用于媒体播放器 并且我使用此代码 public void reverb1 View v PresetReverb mReverb new PresetReverb 0 0 lt l
  • 在 Node.js 中找不到模块

    我有以下目录结构 app test server js app js 我尝试调用 app js 中从 server js 导出的函数 我这样做 var server require test server 但得到错误 Error Canno
  • 十六进制常数

    我想根据其十六进制表示形式声明一个整数参数 两者有什么区别 INTEGER kind int32 PARAMETER a Z FFFFFFFF INTEGER kind int32 PARAMETER b int Z FFFFFFFF ki
  • Vuex 存储中未定义 ReferenceError 状态

    My vuex商店看起来像这样 但打电话时addCustomer I get ReferenceError state is not defined import Vue from vue import Vuex from vuex Vue
  • 在异步函数中返回等待值就是返回一个承诺

    在 Javascript 中 我试图从异步函数返回等待结果 看来 如果我在异步函数中使用该结果 那么一切都会正常工作 它会被视为resolve 参数 并且一切都很好 但是 如果我尝试返回结果 即使存在等待语句 它也会被视为回调 例如 在异步