【问题标题】:What's the Python equivalent to JavaScript's Promise.resolve?与 JavaScript 的 Promise.resolve 等效的 Python 是什么?
【发布时间】:2023-02-16 09:23:22
【问题描述】:

Promise 在 Javascript 中

如 MDN 文档中所示:

Promise.resolve() 方法将给定值“解析”为 Promise。如果该值是一个承诺,则返回该承诺;如果该值是一个 thenable,Promise.resolve() 将使用它准备的两个回调调用 then() 方法;否则返回的 promise 将以该值实现。

当您需要处理类型为 TPromise<T> 的值时,它很有用,您始终可以选择 const promiseValue = Promise.resolve(value) 并将其视为之后的承诺。

例子:我想要什么

假设有一个值:Union[T, Future[T]],我想将它转换为 Future 类型。在 JavaScript 中我只能value = Promise.resolve(value),但我不知道在 Python 中推荐的方法是什么。

问题

虽然我总是可以选择自己构建一个,但我只是想知道 Python 是否有内置方法来为 Future 做同样的事情?

在 Python 中没有 Promise.resolve 的情况下处理这种情况的建议方法是什么?

【问题讨论】:

  • 有趣的问题。我将您的评论添加到问题中。您的研究是什么 - 您是否偶然发现 javascript - Differences between Futures in Python3 and Promises in ES6 有帮助?
  • 我认为 python 使用不同的哲学来处理 Future。我认为 Futureadd_done_callback 等同于 Promise.then in ,但结果只是一个监听器模式,这使得 future 不可链接。因此这个问题变得毫无用处,除非 Python 有 Promise.then 机制。

标签: python asynchronous concurrent.futures


【解决方案1】:

最后我使用 Observable 而不是 Future/Promise。 ReactiveX 是一种更通用的处理异步操作的模式。可观察到未来/承诺就像列表到标量值。 RxPY 中的 Promise.resolve(value) 等价于 reactivex.just(value)

【讨论】:

    猜你喜欢
    • 2018-07-17
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多