繁体   English   中英

蓝鸟和es6承诺打字稿

[英]Bluebird and es6 promises in typescript

我开始了一个新项目,我想使用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显然返回原生承诺,而我在我的应用程序的其余部分使用Bluebird承诺。 我该如何妥善处理此类案件?

[ts]类型'Promise'不能分配给'Bluebird'类型。 财产类型'然后'是不相容的。

@Filipe正确解释错误消息。

  • 无论this.limiter.schedule(...)返回的对象类型是什么,该类型与bluebird.Promise<IPlayerProfile>不兼容。
  • 没有人能够可靠地假设limiter.schedule(...)返回一个“vanila”,即本机的Promise<IPlayerProfile>对象。 您可以通过转到定义schedule(...)的源代码轻松找到它。 在我的Visual Studio代码中,我使用F12来实现目标。 注意那里对象的精确返回类型。
  • 根据返回的确切内容,您有两个主要选择:
    1. 在代码中的任何地方使用该承诺类型,而不是完全依赖bluebird的承诺; 要么
    2. 将该承诺类型转换为bluebird类型 我没有尝试过,但以下情况应该有效: return Promise.resolve(this.limiter.schedule(request, requestOptions)) (参见http://bluebirdjs.com/docs/api/promise.resolve.html )。

我希望它有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM