JavaScript 默认等待而不是手动等待

2023-12-11

Async/await 确实很方便,但我想要与它们相反的行为。我希望函数能够屈服,除非我手动指定它们继续并行运行,而不是其他函数继续运行,除非我手动要求它们等待承诺。

例如,这段代码会打印出1 3 2:

function wait(ms) {
    return new Promise(r => setTimeout(r, ms));
}

async function a() {
    console.log("1");
    await wait(5000);
    console.log("2");
}

a();
console.log("3");

我想要打印出来1 2 3, 具有函数a()直到我等了 5 秒并打印了 2 后才真正返回。我正在制作一个我希望轻量级的扩展,所以我不想使用第三方库。

有什么办法可以做到这一点吗?


隐式等待是不好的,原因在这个博客。简而言之,考虑一下为什么 JavaScript 中不需要锁定。这是因为我们不担心被人抢先。

另外,正如丹尼尔在评论中提到的,全球await也不允许,大概是为了向后兼容。

您可以通过像这样包装顶级代码来解决此问题:

let wait = ms => new Promise(r => setTimeout(r, ms));

async function a() {
  console.log("1");
  await wait(5000);
  console.log("2");
}

(async () => {

  // Put your top level code here!

  await a();
  console.log("3");

})().catch(e => setTimeout(() => { throw e; }));

并不完美,但完成了工作,没有把一切搞得天翻地覆。

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

JavaScript 默认等待而不是手动等待 的相关文章

  • Jquery - 如何替换div中的一个单词?

    我有一个从其他位置复制的 div 我需要更改其中的一个单词 这是 HTML div class dealer addy 8726 N Royal Ln br Irving TX 75063 br email protected cdn cg
  • 如何使用 angular2 在客户端生成 rsa 密钥对?

    我需要知道如何使用 angular2 在客户端生成 rsa 密钥对 我需要生成私钥 公钥对并将私钥保存到数据库中 并希望在客户端内使用公钥 我怎样才能实现这个 我找到了这个https www npmjs com package genera
  • 提供文件数据时触发“drop”事件

    Question 我如何在提供文件时触发drop场的事件 其中我在加载时无权访问 Details 有一个页面 其中有一个字段 上面附加了drop掉落时处理图像的侦听器 我希望能够通过以下方式使用这个过程pasting一个图像 我知道如何从粘
  • HTML5 Canvas - 在画布上绘图、保存上下文并稍后恢复

    要求 现在 在画布上绘制 然后点击 保存 存储画布状态 离线绘制 但不作为图像 稍后 打开画布并显示之前保存的绘图 然后继续再次绘制 对于绘图 我们通常使用如下代码 canvas document getElementById can ct
  • 是的验证;同一字段可以接受不同类型吗?

    我对是的很陌生 我试图验证字段可以是遵循某个正则表达式的字符串 也可以是此类字符串的数组 这是检查字符串与我的正则表达式匹配的工作示例 field yup string matches regex 现在我想要field如果它有一个这样的字符
  • iPhone Web 应用程序禁用缓存

    我使用 PHP 构建了一个 iPhone 网络应用程序 主 也是唯一 页面包括苹果移动网络应用程序支持 and 苹果触摸全屏元标记 以便在添加到主屏幕后可以全屏运行 然而 似乎每次我从主屏幕启动应用程序时 都会使用页面的缓存版本而不是刷新页
  • GraphQL:从对象构建查询参数

    如果我有一个对象 where publishedAt lt 2018 01 01 如何将其转换为适合查询参数的字符串 articles where publishedAt lt 2018 01 01 这看起来是一个有趣的库 我建议检查一下
  • 停止倒数计时器 Javascript onClick

    给出以下代码 myButton02 click function myButton02 hide counter animate width toggle var count 65 var counter setInterval timer
  • 如何让机器人状态显示为“手机在线”

    我看到 NotSoBot 的状态为在线在移动 https i stack imgur com IiF4k png 有没有办法可以在discord js 中做到这一点 我知道这已经很旧了 但更简单的方法是将其添加到定义客户端 机器人的位置 c
  • 递归process.nextTick警告

    作为我的应用程序的一部分 我有以下代码行 process nextTick function pre populate cache with all users console log scanning users table in ord
  • 按周将对象数组拆分为组

    我有一个包含这样的数据的对象数组 date 01 01 2017 00 00 00 dataField1 dataField2 date 01 02 2017 00 00 00 dataField1 dataField2 date 01 1
  • 未处理的 Promise 拒绝:push.on 不是函数

    我正在使用离子2 我得到这个打字稿error当尝试设置推送通知时 我从教程中复制了此示例代码 因此预计它可以工作 我一定有什么问题 任何想法请 Unhandled Promise rejection push on is not a fun
  • 如何在从数据库异步加载中用占位符替换不存在的图像

    我有一个包含图像的数据库 我需要根据用户的请求即时加载这些图像 这些图像将作为包含 div 容器中的单独 s 的背景图像 类似于图像滚动条 该数据库当前是本地数据库 但这不是我的问题 问题是数据库可能没有我请求的所有图像 并且我可能会得到一
  • ag-Grid 中的行格式

    我们需要有条件地将行文本设置为粗体 目前它仅适用于单个单元格 但我们需要在所有列单元格上应用文本粗体 应用格式设置后 isBold 列必须隐藏 删除 此列仅用于格式化 如何应用文本缩进 10px isBold 列包含真实值的第一列的 有可能
  • 使用 _.extend() 进行 JavaScript 继承

    有什么区别 Employee prototype Object create Person prototype and extend Employee prototype Person prototype 两者都给出相似的结果 输出 但下划
  • 如何捕获 google 地图的无效 API 密钥

    我有这个代码 如果密钥无效 则会弹出警报 但我想在这种情况下执行一些操作 但我不知道如何连接它 有任何想法吗 Google 不提供检查 Google 地图 API 密钥的外部方法 因此 您无法使用例如查询某些服务 此代码有效吗abcde12
  • React Native:当您的应用程序关闭时是否有回调函数?

    我有一个 setInterval 即使您关闭 而不是退出 应用程序也会继续运行 我想在我的应用程序关闭或设备进入睡眠状态时调用一个函数 以便清除 setInterval AppState 是你的朋友 看看AppState 的文档 https
  • Jquery 脉动改变颜色或图像

    我正在尝试使用 jquery 脉动代码让 div 改变颜色 但我希望它从红色变为黑色 但我听说要做到这一点 你必须下载某个插件 所以我希望它脉动为图片 到目前为止我有这两个代码 img src 36 gif alt width 105 he
  • 离子选择:预选值在单击一次之前是不可见的

    我刚刚在 ionic 版本 6 中创建了一个 ion select 我的问题是 我在页面加载时已成功预选了一个值 但此预选值未显示在 UI 中 它只是在我单击选择之后出现 但在它没有出现之前 如图 2 所示 我在 ionViewWillEn
  • 如何防止外部 CSS 添加和覆盖 ReactJS 组件样式

    我有一个自定义的 ReactJS 组件 我想以某种方式设置样式 并将其作为插件提供给许多不同的网站 但是 当网站使用全局样式 Twitter bootstrap 或其他 css 框架 时 它会添加并覆盖我的组件的样式 例如 全局 css l

随机推荐

  • 如何将图像传递到 html 文本区域 [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我想知道如何将图像从图像库传递到 html 文本区域 我应该使用 jquery javascript 吗 你知道关于这个函数的一些好的教程吗 通过操作系统内置选择器选择图像后
  • Julia 1.0 UndefVarError - 变量范围

    我将从 Julia 0 7 升级到 1 0 看来 Julia 对变量范围的规则从 0 7 更改为 1 0 例如 我想运行一个像这样的简单循环 num 0 for i 1 5 if i 3 num num 1 end end print nu
  • 如何用纯 JavaScript 制作这样的工具提示

    我需要使用 JS 而非 JQuery 插件来制作一个简单的工具提示 如下图所示 Click on image should open this tooltip and click again on the same image to clo
  • 反序列化时如何忽略 JSON 对象数组中的空白数组?

    我正在使用 Json NET 反序列化 JSON 我怎样才能忽略一个空白数组意外发生在对象数组反序列化期间 我已经在这个网站上测试了来自第三方的以下 JSONhttp json parser online fr 确认它是格式良好的 tota
  • 每个 google-maps api 密钥的引荐来源限制

    我们为超过 2500 家客户提供网站 CMS 解决方案 几乎所有网站都有谷歌地图模块 因此 自从谷歌改变了其地图使用政策以来 所有这些网站的地图模块日复一日地出现错误 我们需要想出一些快速 但肮脏 的解决方案 我们决定使用多个 api ke
  • pip Python 3 权限错误

    我在 Mac OS X 上使用 Python 3 一切都很完美 我曾经安装这样的软件包 pip install somePackage 但 IDLE 停止工作 所以我不得不重新安装它 之后 当我运行 pip 时 我得到了pip is not
  • numpy - ndarray - 如何删除基于另一个数组的行

    我想从基于另一个数组的 ndarray 中删除行 例如 k 1 3 99 n 1 a 2 b 3 c 4 c 99 a 100 e 期望结果 out 2 b 4 c 100 e k 中包含值的行的第一列将被删除 您可以使用np in1d创建
  • Shiny:使用 selectizeInput 选择组

    我有这样的愿景 我有一个选择器 用户可以单击该组来选择该组中的所有项目 例如 请参见this 当您单击输入框 X2 或 X4 时 我希望用户能够单击 西部 以选择加利福尼亚州和华盛顿州 理想情况下 我希望用户能够选择多个区域 并且能够自定义
  • Javascript 返回 OR(||) 运算的字符串

    我无法理解这一点 以下是使用 OR 运算符的表达式 var subCond1 adj getData relationEnabled true adj getData unhideIfHidden adj getData hlFixed t
  • 如何使用 awk 打印出最后一个模式范围?

    我的文件是这样的 开始模式 第一场比赛 结束模式 其他文字 开始模式 第二场比赛 结束模式 其他文字 开始模式 这就是我 想要打印出来 结尾 图案 其他文字 如何使用 awk 打印出最后一场比赛 我只知道如何打印所有这些匹配项 取决于您是否
  • 奇怪的 UIButton 行为:这正常吗?

    我有一个简单的 UIButton 想要在用户触摸它时执行某些操作 但随后将手指移到按钮之外并不触摸屏幕 所以看来我需要监听 UIControlEventTouchUpOutside 事件 在我的视图控制器中 我这样做了 UIButton b
  • java静态类单例与泛型

    我正在尝试创建如下所示的单例 但我不断收到警告 如果可能的话 我不想抑制警告 有办法做到吗 现在 我不想考虑线程安全性 我只是想传递这个警告 public interface Storage
  • vbscript - 将 Internet Explorer 应用程序窗口置于前面

    我有一个脚本 我通过它创建一个 IE 窗口CreateObject InternetExplorer Application 问题是 每当我运行这个脚本时 它总是在我的机器上可能已经打开的其他脚本之后打开 我希望这个 IE 窗口在其他所有窗
  • 使用 Clipboard.js 时 data-clipboard-text 不起作用

    我有一个简单的结构要测试clipboard js但它不起作用 我在一个简单的文件中使用 因为它在项目中也不起作用
  • MySQL select unique 不起作用

    我有一个数据库 其中有 1 个表 其中包含以下行 id name date 1 Mike 2012 04 21 2 Mike 2012 04 25 3 Jack 2012 03 21 4 Jack 2012 02 12 我只想提取不同的值
  • CSS3 - 动画文本左/中/右对齐

    我有一行 未换行 全角 div 内的文本 是否可以为这个元素设置动画text alignment所以文本移动到给定的一侧 中心 我知道我可以测量宽度并使用relative absolute positioning 但我没有找到直接的解决方案
  • ReferenceError:Jdbc未定义,V8版本问题?

    我的代码已经每天运行 6 个月了 但现在似乎不再运行了 我知道 Google App Script Runtime 更新了 V8https developers google com apps script guides v8 runtim
  • 如何调试 exec() 问题?

    exec 命令在我的服务器上不起作用 它不执行任何操作 我已关闭安全模式 并验证所有控制台命令都正常工作 我已尝试使用绝对路径 我已经检查了应用程序的权限 我需要的所有应用程序都有执行权限 我不知道还能做什么 这是我尝试过的代码的概要 ec
  • 去饱和效果消除了对比度

    我对 javaFx 的 ColorAdjust 效果有一个非常具体的问题 我正在尝试在图像上应用灰度滤镜 我正在使用 ColorAdjust 效果并设置饱和度 这是我正在尝试做的事情的可重复示例 public class App exten
  • JavaScript 默认等待而不是手动等待

    Async await 确实很方便 但我想要与它们相反的行为 我希望函数能够屈服 除非我手动指定它们继续并行运行 而不是其他函数继续运行 除非我手动要求它们等待承诺 例如 这段代码会打印出1 3 2 function wait ms ret