javascript - Bluebird promise 与 Swagger : return is not a function

标签 javascript promise swagger bluebird

我正在使用 Swagger 创建 JS API 客户端来调用一组 REST 端点。我正在配置 Swagger 客户端以使用 Promises ( new Swagger({ spec: spec, usePromise: true }) )。

require Bluebird 在 Swagger 之前,使用 Bluebird promise 。但我的应用程序在尝试使用 Promise.return 时崩溃了.

代码看起来像

client.user.get_db_user(db).return("foo");

其中 client 是 Swagger 引用。

我得到的错误是

app: TypeError: client.user.get_db_user(...).return is not a function

如果我替换 return 就可以了与 then(() => value)return应该是这种使用 then 的简写.

经过调查,我发现它没有兑现 Swagger 客户端返回的 promise 。

发生了什么事?

最佳答案

您似乎无法告诉 Swagger 使用 Bluebird Promise。但是,在您想要使用 Bluebird 方法的特定位置,您可以将 Swagger Promise“转换”为 Bluebird Promise,然后使用 Bluebird 的功能。要转换这样的 Promise,只需将其包装在 Promise.resolve() 中:

const Promise = require('bluebird');

Promise.resolve(client.user.get_db_user(db)).return(...)

尽管在这种特定情况下,由于 .return() 只是为了节省您的输入量,所以在您将之前的 promise 封装在 中之后,它并不是真正的净节省。 Promise.resolve()。但是,对于更有意义的方法,例如 .map() 或类似的方法,它可能更有用。

关于javascript - Bluebird promise 与 Swagger : return is not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41796949/

相关文章:

javascript - 无法设法在对话框内的左侧 float 图像旁边设置文本

javascript - 使用 Twitter Bootstrap 创建合并表格单元格

javascript - 使用 promise /构造 promise 链时,如何设计/集成错误处理?

spring-boot - 无法从 spring-boot 应用程序中调出 swagger-ui

java - Jersey JAX-RS,Swagger - 生成 swagger.json 但没有 UI

Chrome 中的 Javascript 和 XML 解析

javascript - 如何在 block 相同名称类(Jquery)中单击按钮后进行不同的操作?

javascript - 为什么 'this' 在使用 Promise 时在类方法内部未定义?

javascript - Promise 的第二个 .then() 没有失败

java - swagger oauth 明白了,那么现在怎么办?