在 if/else 中使用 Promise

2024-02-13

我有一个条件语句,其中我需要执行两个操作之一,然后在任一操作解决后继续。所以我的代码目前如下所示:

if (shoud_do_thing_a) { //should_do_thing_a is just a variable that determines which function to call. it is not a promise
  do_thing_a()
} else {
  do_thing_b()
}

// more code

问题是两者do_thing_a and do_thing_b返回承诺,并且在执行的任何一个解决之前我无法继续。我想出的解决这个问题的最好方法是这样的:

var more_code = function () { 
  // more code
}

if (shoud_do_thing_a) {
  do_thing_a().then(more_code)
} else {
  do_thing_b().then(more_code)
}

我不喜欢这个结构。很难跟上,因为你需要跳来跳去才能找到位置more_code被定义(想象我在几个位置都有这种类型的控制流),而不是简单地能够继续阅读。

javascript中有没有更好的方法来处理这种类型的事情?


如果你可以使用 async/await

async function someFunc() {
    var more_code = function () { 
        // more code
    }

    if (shoud_do_thing_a) {
        await do_thing_a()
    } else {
        await do_thing_b()
    }

    more_code()
}

或者如果你不能,使用then():

var more_code = function () { 
    // more code
}

var do_thing;
if (shoud_do_thing_a) {
  do_thing = do_thing_a()
} else {
  do_thing = do_thing_b()
}

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

在 if/else 中使用 Promise 的相关文章

随机推荐

  • 在 JavaFX 中的所有表格单元格上设置工具提示

    我的应用程序包含一个TableView 根据每行中特定单元格的值 通过设置自定义单元格工厂来更改行样式setCellFactory对于本专栏 这很好用 现在我想添加一个工具提示 使用它没什么大不了的setTooltip 然而 此工具提示应设
  • 删除与正则表达式匹配的文件

    在 Windows 上从与 Perl 中的某些正则表达式匹配的目录中删除所有文件的最短和最好的方法 我的例子 全部删除 txt目录中的文件 但保留tmp txt 视窗 chdir dir or die unlink grep ne tmp
  • Pandas 将所有对象列转换为类别

    我想要一个优雅的函数来将 pandas 数据框中的所有对象列转换为类别 df x df x astype category 执行类型转换df select dtypes include object 将子选择所有类别列 但是 这会导致其他列
  • 具有函数得分的 ElasticSearch 查询运行速度慢了 10 倍以上

    这是我的没有功能分数的查询 from 200 size 25 query bool filter bool must nested query terms cotypes id 199
  • 在 Delphi 的 Label 中显示简单标记

    我当前正在 TLabel 中显示一些文本 我现在想通过在文本中显示某些单词来强调它们bold也许italic 在 Delphi 中推荐的方法是什么 是否有类似 TLabel 的组件可以显示简单的 HTML 或标记 我正在想象这样的代码 la
  • 如何在 MSBuild 中排除(禁用)PackageReference 的(传递)依赖性?

    我正在使用一个包Xamanimation其中有一个依赖项Xamarin Forms 4 1 0 写在其nuspec file
  • 在 UIPageViewController 中预加载下一页

    我已经看过很多很多地方 但还没有找到一些好的示例代码来展示如何在 UIPageViewController 中预加载 下一个 页面 关于 SO 有一些答案 详细介绍了一些理论上的方法 请参阅这个问题 https stackoverflow
  • Camera 和 SurfaceView 的奇怪行为

    我对 SurfaceView 的使用感到疯狂 我开发了一个以固定时间间隔拍照的应用程序 它与我的 Androd 2 3 设备配合良好 这是示例代码 public class MainActivity extends Activity pri
  • 在android studio中设置不同的语言

    我是 Android Studio 的新手 我正在尝试通过雅虎天气服务 JSON 数据制作我的简单应用程序天气信息 我想在我的应用程序中显示不同的语言 例如英语和阿拉伯语正在处理 string xml 并翻译一些主要活动中的单词 我尝试将条
  • RxJava 对列表执行操作并返回可观察值

    我是 RxJava 特别是 RxJava2 的新手 并且在看似相对简单的操作中遇到了一些麻烦 我需要从数据库获取一些数据 迭代数据 它表示为列表 对每个项目执行操作 将数据包装在另一个对象中并返回 这是我到目前为止所拥有的 mDataMan
  • 如何使用安卓exoplayer

    我正在寻求实施 Google 的ExoPlayer在我的应用程序中 他们的文档对我来说似乎相当模糊 我所寻找的只是从 URL 播放视频 没有复杂的自定义设置或类似的东西 尚未找到任何有关如何操作的教程 他们在 git 上提供的示例对于我的需
  • AVAudioEngine() 播放不工作

    我正在尝试使用改变声音的音调AVAudioEngine 在斯威夫特 这是我的代码 func setUpEngine let fileString NSBundle mainBundle pathForResource 400 ofType
  • C命令行密码输入

    我想允许用户使用命令行界面输入密码 但我不想在屏幕上显示此密码 或显示 在C语言中如何实现呢 谢谢 Update 我只在 Linux 上工作 所以我其实并不关心Win或者其他系统 我尝试了卢卡斯的解决方案 效果很好 不过 我还有一个问题 如
  • Java新线程需要内存

    我有一个大量创建线程的应用程序 结果我得到了内存不足错误 我的想法是等到有足够的可用空间来创建下一个Thread 但因此我需要知道创建一个线程需要多少内存以及这个内存量是否可用 有没有办法获取线程所需的内存量 我怎样才能确定这个内存量是否可
  • 为什么 UIButton 框架被 setTitle: forState: 方法重置

    问题如下 在某个时刻 按钮的位置发生了变化 此后 按钮的标题也必须更改 位置通过动画 UIView 动画块 更改 并且当设置标题时 帧返回到原始值 动画之前 那么 我该如何解决这个问题 为什么会发生这种情况 用代码更新 CGRect but
  • 如果客户端禁用了 Javascript,我该怎么办?

    我的网站严重依赖 Javascript 如果我将其关闭 我的网站就会看起来非常丑陋 我想通过向用户显示打开它的通知来强制用户使用 Javascript 否则提示他该网站无法查看 我该怎么做才能实现这一目标 看看这里 无脚本标签 http w
  • Android 设备可以同时在外围模式和中央模式下运行蓝牙 LE 吗?

    是否可以在运行外设和中央模式的 Android 设备中安装 LE 蓝牙 同时用于广告和收听 是的 您绝对可以作为外设并同时连接其他外设 对此的限制之一是设备限制 请下载BLE 中央 外设检查器请确保您的设备支持 BLE 外设 BLE 中央或
  • WinAPI:如何在自定义编辑控件中处理键盘输入

    因此 我使用 Windows API 在 C 中创建自己的编辑控件 多行文本框 一切进展顺利 但我对一件事有点困惑 首先 该控件被构建为能够处理 unicode 并且所有输入都将转换为 unicode 换句话说 所有输入都将存储为wchar
  • 如何在JavaEE中响应后执行代码

    我尝试找到一种在响应后运行代码的方法 但没有成功 就我而言 服务器向我发送数据以便让我完成工作 但此操作可能会很长 例如 向 5000 个联系人发送短信并检查谁收到了它 服务器期望立即收到 HTTP 204 No Content 响应 以确
  • 在 if/else 中使用 Promise

    我有一个条件语句 其中我需要执行两个操作之一 然后在任一操作解决后继续 所以我的代码目前如下所示 if shoud do thing a should do thing a is just a variable that determine