问题标签 [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 投票
2 回答
2270 浏览

node.js - 蓝鸟而不是 Koa 中的 Co?

似乎 Bluebird 在生成器/协程相关功能中与 Co 重叠。Bluebird 被认为具有出色的速度性能,所以为了讨论,(假设上述重叠前提是正确的)如果想在 Koa(Node.js 上下文)中用 Bluebird 代替 Co,是否可以在不降低 Koa 的情况下轻松完成功能,如果是这样怎么办?

(我的猜测是它实际上无法完成,因为它似乎 Koa 是基于 Co 构建的并且没有明确地公开它,而是将其暴露出来。这样的替换似乎无异于用 Bootstrap 中的其他东西替换 jQuery)

0 投票
1 回答
1244 浏览

promise - Microsoft bing 地图 api 和加载模块问题

我正在构建一个商店定位器并通过 require 加载一个自定义模块。自定义模块依赖于微软的 Directions & Search 模块。我讨厌回调地狱,并希望在加载所有内容后预加载模块返回自定义模块的承诺和操作。

将 bluebird 用于 Promise 规范,我尝试了几种方法Promise.method,我似乎无法让它们中的任何一个工作。Promise.promisifynew Promise(function(resolve, reject){Microsoft.Maps.loadModule({callback:resolve})})

我的最新实现:

结果Uncaught TypeError: Cannot read property '_tryFollow' of undefined bluebird.js 任何人都可以指出最新代码中的明显错误或以承诺方式加载模块的伪代码示例。

0 投票
1 回答
67 浏览

javascript - 如何使用 JavaScript 承诺提示异步操作?

出于学习目的,我想展示 Promise 如何帮助解决 JavaScript 中数据库操作的时间依赖性。

所以,我想证明:

实际上在幕后消耗时间。

我如何说明这种时间依赖性和 Promises 提供的可能解决方案?

我到目前为止是这样的:

0 投票
2 回答
736 浏览

javascript - 如何在一个 Promise 中包装几个 bluebird Promise?

我需要一个异步包装器,用于由 db 查询备份的 redis 查询。如果redis查询失败,我想做db查询。如果db查询成功,我想在返回之前将返回的数据添加到redis中。我需要该函数(希望是对象上的几个此类方法之一)来返回一个承诺,因为它将在 node.js 中被调用。我正在使用蓝鸟承诺库,并使用它来承诺 redis。我正在为数据库使用 mongo-gyro,它也是基于蓝鸟的。这两个都独立工作。

任何帮助都深表感谢 - 甚至是伪代码 - 尤其是。错误处理

};

更新:下面的函数有效,最后显示来自 redis 或 mongo 的数据。但是 - 到目前为止,我一直未能成功地将其转换为类上的方法,该类返回要返回给 node.js 处理程序的承诺。注意 - 我需要添加“绑定”以捕获数据源

0 投票
1 回答
886 浏览

javascript - Promises/A+ 的实现有何不同?

规范没有涵盖Promise 库的哪些方面?实现之间有哪些不同?

请举例说明实际差异(例如 Bluebird 和 Q 之间的差异)。

0 投票
1 回答
314 浏览

node.js - 当需要处理错误并继续使用 Promise 流程时,使用更好的 Promise 方法

我的函数中需要以下逻辑:

  1. 使用护照登录 facebook,我调用该方法来检索具有 facebook id 的用户。
  2. 如果用户存在,完成!
  3. 否则,我会调用该方法来使用电子邮件检索用户。
  4. 如果用户存在,我需要用 facebook id 更新用户并完成!
  5. 否则,如果用户不存在,我需要使用电子邮件和 facebook id 创建他的帐户。

例如,在 java 中,它会是这样的:

我如何组织它与 Promises 有关?我使用蓝鸟承诺如下:

我认为这是错误的,因为当“return userService.update(user, ['facebook_account']);” 被拒绝我需要捕获错误并返回错误并且不创建用户。

从同步逻辑转换为承诺的最佳方法是什么?

0 投票
3 回答
506 浏览

javascript - 如何将回调地狱转化为承诺?

考虑到这个例子:

有没有办法使用 Promise 来简化这个例子?看看所有方法都是依赖的,并且有类似的验证,if(models.length > 0) 此外我需要将它们分组res.render在一个独特的地方。

0 投票
1 回答
1649 浏览

javascript - 使用 bluebird 创建支持节点回调和承诺的节点库

我正在创建一个节点模块,我希望能够同时支持节点回调和 Promise API。我听到最好的东西(主要是它最快的)的图书馆是bluebird。因此,在阅读了一些文档并查看了其他一些使用 bluebird 的库之后,我认为这是获得支持节点回调和 Promise API 的方法的最干净的方法:

但是,使用此代码,永远不会执行回调。经过更多研究,我尝试了这个:

使用该代码,节点回调和 Promise API 都可以工作。

作为参考,这是 isAllowed 方法:

我在第一个代码示例中做错了什么,还是第二个示例是获得我正在寻找的东西的真正方法?

0 投票
1 回答
3730 浏览

timeout - 预先捕获一个 Promise 的 TimeoutError

我有一个可以取消的蓝鸟承诺。取消后,我必须做一些工作才能巧妙地中止正在运行的任务。可以通过两种方式取消任务:通过promise.cancel()promise.timeout(delay)

为了能够在取消或超时时巧妙地中止任务,我必须捕获 CancellationErrors 和 TimeoutErrors。捕获 CancellationError 有效,但由于某种原因我无法捕获 TimeoutError:

如何在设置超时之前捕获超时错误?

0 投票
1 回答
47 浏览

node.js - 如何使用蓝鸟获取用户名?

使用bluebird q,我有这个:

上面代码的目的是获取用户名并将其添加到帐单中,这很好用,现在如果我有一个帐单列表,如何获取所有帐单的名称并分配给 myBills?使用循环?还是蓝鸟有其他方法?