问题标签 [bluebird]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
905 浏览

json - 在 node.js 中承诺一个递归函数

我在我的应用程序中使用bluebird作为控制流,我正在尝试实现promisify以将我的递归函数扩展为一个promise,但似乎“then”方法从未被执行

我正在做从一个 JSON 对象到另一个对象的映射,find 函数递归地查看 JSON 属性并根据特定条件返回属性。

0 投票
2 回答
385 浏览

javascript - 承诺的连接不返回任何内容 (JS)

承诺连接的问题

我最近将我的 Node 应用程序从在我的本地机器上运行转换为使用 Amazon EC2 来运行 Node 应用程序和使用 VPN 来提供文件服务和 MySQL。

我对 Promises 的了解足以编写以下连接片段(在响应客户端之前运行 3 个查询),使用Bluebird。连接在我的机器上工作,但使用 VPN 托管的 MySQL 设置,连接每次都崩溃,大约在应用程序启动后 30 秒,我意识到这可能是因为我忘记关闭它们。

编辑:根据评论,问题似乎不在连接关闭中。

所以我以我知道的最好的方式修改了我的脚本来关闭连接,但是对于 Promises,这很令人困惑。此版本的连接不起作用。它不会失败或导致任何错误。它只是在服务器端不返回任何结果。我认为我的问题在于我关闭连接的方式。

  • 是什么导致了这个问题?

  • 是连接关闭吗?

  • 如果是这样,我将如何正确关闭它们?

我的(简化的)MySQL 连接尝试与Bluebird Promises

控制台结果

0 投票
1 回答
5590 浏览

node.js - Bluebird 承诺函数返回值

我想在 AWS putItem函数上使用 Bluebird 的 promisify函数。从文档中注意到它返回一个 AWS.Request 对象。我对那个对象不感兴趣,理想情况下我会调用 db.putItem({...}); 并得到一个承诺。这可能吗?当我尝试它时,promisify'd 函数仍然返回一个 AWS.Request 对象,我认为这是合理的,在这种情况下这不是我想要的。

目前我只是创建一个 Promise 对象并将成功和错误数据手动映射到解决/拒绝承诺函数,但感觉就像我在编写不必要的样板代码,因为除了返回值之外,putItem 函数 (和可能的其他功能)似乎非常适合promisify。

根据要求,以下是代码的相关部分:

//datastore.js

//user.js

0 投票
1 回答
5165 浏览

node.js - 将 Q 迁移到 BlueBird(或 Vow)

我目前在 Node/amqp 应用程序中使用 Q Promise 库。我读过 Q 与 BlueBird 或 Vow 等库的性能……不太好。

不幸的是,我不知道如何使用 BlueBird(或 Vow)来替换我当前的 Q 使用模式。

这是一个例子:

我应该提到 - 我正在使用 TypeScript ......在这个例子中,我正在使用 amqplib 承诺,并从中创建一个 Q 承诺(因为我不喜欢 amqplib 承诺)。我如何使用 BlueBird 或 Vow 做到这一点?

另一个例子是:

该模式是如何实现的?

所以我的一般问题是:

  1. 我读到的性能差异是真的吗?
  2. 我如何从 Q 迁移到 BlueBird 或 Vow,重点关注这两种模式(但使用“then”的解释也很好)?
0 投票
5 回答
18444 浏览

javascript - 如何使用 bluebird 承诺 MongoDB 本机 Javascript 驱动程序?

我想使用带有bluebird promises的MongoDB 原生 JS 驱动程序。我如何在这个库上使用?Promise.promisifyAll()

0 投票
1 回答
2333 浏览

node.js - NodeJS,BlueBird - 在返回之前等待 Promise 解决

我知道这种方式违背了目的,但我看不到任何选择。

设置是这样的:

  • 将接收消息以创建 RabbitMQ 队列的消息处理程序(函数)
  • 处理程序将创建队列,接收队列创建承诺
  • 然后处理程序返回一个响应消息,指示完成(队列创建)
  • 此响应消息通过不同的队列发布
  • 响应消息的接收者开始发布到新创建的队列

这就是问题所在。

我首先不等待队列的创建完成(要完成的承诺),并且发布者在队列的创建完成之前开始发布。

然后我尝试使用队列创建承诺履行来触发发布的开始。这里的问题是我无法在队列中传输 Promise(及其解决方案)以供发布者使用。

我夹在 Promise 和队列之间。如果我可以强制(等待)队列创建完成,那么我会没事的。

这可能吗?

0 投票
3 回答
106592 浏览

javascript - 什么是明确的承诺构造反模式,我该如何避免它?

我正在编写代码,它看起来像:

有人告诉我这分别称为“延迟反模式”或“Promise构造函数反模式”,这段代码有什么不好的,为什么这叫做反模式

0 投票
1 回答
230 浏览

promise - 如何消除此代码中的延迟

它是 TypeScript,使用 BlueBird 和 amqplib。我在某处读到只有失败者使用“延迟”,我不想成为失败者(至少出于这个原因)。所以我开始尝试重写这个没有 - 无济于事(只是还没有):

我已经转换了所有类似的方法并在此进行了一些运行,但总是不够用。也许是因为我正在尝试返回两个值(确认承诺和响应承诺),但实际上我认为这与尝试为调用嵌入式处理程序的最终结果返回承诺有关 - 不使用延迟。

你能(请)做得更好(或告诉我推迟是可以的)吗?

0 投票
4 回答
5010 浏览

node.js - 使用 Bluebird 手动承诺 pg.connect

我想承诺 node-postgres 的方法以及回调中提供pg.connect的内部方法。connection.query

我可以.promisify后者,但我需要手动实现第一个(如果我在这里遗漏了什么,请解释)。

问题是,我不确定这段代码是否正确或应该改进?该代码正在运行,我只想知道我是否按原意使用 Bluebird。

0 投票
1 回答
262 浏览

javascript - Promise 如何与异步库一起工作?

带有承诺的文档是可怕的。连接数据库句柄并运行类似快速路由的正确方法是什么?

所以现在我有了 dbh,它是一个Promise. 我在我的路线中做什么......

做类似的事情的正确方法是......

因为如果是这样,那实际上