gpt4 book ai didi

javascript - 使用async/await进行同步代码执行时, "sync-ify"第三方代码怎么办?

转载 作者:行者123 更新时间:2023-11-30 14:29:04 25 4
gpt4 key购买 nike

<分区>

我有一个用 JS 编写的批处理脚本,在 Node 下执行。

这是一个非常线性的、逻辑上同步的批处理脚本 -- 事情 A 必须在事情 B 之前发生,等等。这个事情需要从上到下执行,最好是逐行同步执行。

(性能在这里并不那么重要。最坏的情况下执行时间为 30 秒。此外,代码块时没有 UI 可锁定。这只会从命令行批量运行,我可能每次都会看到它执行。)

我一直在尝试各种选择:

  • “异步”npm 模块
  • 写我自己的 Promise
  • 使用asyncawait

从可理解性的 Angular 来看,我真的很喜欢最后一个。它将 JavaScript“降级”为简单的线性执行,坦率地说,这正是我想要的。

go()

async function go() {
await doThingOne()
await doThingTwo()
}

但是,有时我的方法中有来自第三方模块的代码,并且是异步的,没有同步选项。

考虑:

go()

async function go() {
await doThingOne()
await doThingTwo()
}

function doThingOne() {
// do some things here
doAsyncThingFromExternalLibrary()
// do some more things here
}

如何等待第三方调用?它是异步编写的,没有同步选项,并且不是我想要更改的代码。

有没有一种方法可以“包装”该调用,以便代码停止并等待它?我应该将它包装在我自己的 Promise 中并使其成为 thenable 吗?

执行此操作的最佳方法是什么?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com