gpt4 book ai didi

typescript - typescript 中的 Bluebird 和 es6 promises

转载 作者:搜寻专家 更新时间:2023-10-30 21:08:27 25 4
gpt4 key购买 nike

我开始了一个新项目,我想在其中使用 TypeScript 而不是纯 Javascript。我正在努力将 Bluebird 与第三方库结合使用。

请看下面的例子:

  import * as Promise from 'bluebird'

private requestPlayerProfile(playerTag:string):Promise<IPlayerProfile> {
const requestOptions = Object.create(this.options)
return this.limiter.schedule(request, requestOptions)
}

问题:limiter 是第三方库的一个实例,并且 limiter.schedule 显然返回了一个本地 promise ,而我在我的应用程序的其余部分中使用了 Bluebird promise 。我将如何妥善处理此类情况?

[ts] Type 'Promise' is not assignable to type 'Bluebird'. Types of property 'then' are incompatible.

最佳答案

@Filipe 正确解释了错误消息。

  • 无论this.limiter.schedule(...) 返回的对象类型是什么, 该类型与 bluebird.Promise<IPlayerProfile> 不兼容.
  • 没有人可以可靠地假设 limiter.schedule(...)返回一个“ Vanilla ”,即一个本地人,Promise<IPlayerProfile>目的。您可以通过转到源代码轻松弄清楚 schedule(...)被定义为。在我的 Visual Studio 代码中,我使用 F12 到达那里。注意那里对象的精确返回类型。
  • 根据返回的具体内容,您有两个主要选择:
    1. 在您的代码中的任何地方使用该 promise 类型,而不是依赖于 bluebird完全是 promise ;或
    2. Convert that promise type to a bluebird one .我自己没有尝试过,但以下应该有效:return Promise.resolve(this.limiter.schedule(request, requestOptions)) (参见 http://bluebirdjs.com/docs/api/promise.resolve.html)。

希望对你有帮助。

关于typescript - typescript 中的 Bluebird 和 es6 promises,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46625324/

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