bluebird相关内容
我需要构建一个函数来处理用于 bluebird.map() 调用的大型 CSV 文件.鉴于文件的潜在大小,我想使用流式传输. 这个函数应该接受一个流(一个 CSV 文件)和一个函数(处理流中的块),并在文件被读取到结束(解决)或错误(被拒绝)时返回一个承诺. 所以,我从: 'use strict';var _ = require('lodash');var promise = req
..
今天有人用 bluebird 提出了一个有趣的案例,处理多个 promise 的最佳方法是什么,我们对停止给定的履行或拒绝不感兴趣,而是对检查最终结果感兴趣.一个例子: var p1 = new Promise(function(f,r){设置超时(功能(){console.log("p1");f("耶");}, 100);});var p2 = new Promise(function(f,r
..
使用 Q 我可以定义一个新的承诺: var queue = q(); 但如果我这样做,Bluebird: var queue = new Promise(); 我明白了: TypeError:promise 构造函数需要解析器函数 如何获得与 Q 相同的结果? 这是我的代码片段: var queue = q()承诺 = [];queue = queue.then(函数(){返回
..
Promise.all() 不保证承诺会按顺序解决.这怎么办? 解决方案 由于您使用的是 Bluebird JS,这实际上可以通过简单的方式完成. 在 2.0 版本中,Bluebird 引入了执行此操作的 Promise.each 方法,因为循环 then 非常简单,但由于它是如此常见并且一次又一次地被请求,因此最终将其添加为自己的方法. function foo(item, ms
..
我正在做一些涉及按顺序运行 child_process.spawn() 序列的事情(进行一些设置,然后运行调用者感兴趣的实际命令,然后进行一些清理). 类似于: doAllTheThings().then(函数(退出状态){//所有的事情都完成了//我们已经返回了 exitStatus//链中间的命令}); 其中 doAllTheThings() 类似于: function doAll
..
我正在尝试使用带有 Bluebird 库的 promise 重构我的 nodejs 服务器,但我遇到了一个简单的问题. 从我的数据库中获取用户后,我想列出与该用户关联的所有通知类: 糟糕的方式(工作...) adapter.getUsers(function(users){users.rows.forEach(功能(项目){用户 = 项目.用户名;适配器.getNotificatio
..
Bluebird promisifaction 是一个小魔法,而 request 则相当混乱(它是一个具有方法的对象的函数). 具体场景非常简单:我有一个通过 cookie jar 启用 cookie 的请求实例(不使用 request 的全局 cookie 处理程序).我怎样才能有效地承诺它,以及它支持的所有方法? 理想情况下,我希望能够: 调用 request(url) ->
..
我无法理解将 .catch BEFORE 和 AFTER 放在嵌套 promise 中的区别. 备选方案 1: test1Async(10).then((res) => {返回 test2Async(22).then((res) => {返回 test3Async(100);}).catch((错误) => {抛出“错误之后";});}).then((res) => {控制台日志(res)
..
我在 Node.js 下使用 Bluebird promise 库,很棒!但我有一个问题: 如果您查看 Node 的 child_process.exec 和 child_process.execFile 你可以看到这两个函数都返回一个 ChildProcess 对象. 那么推荐的承诺这些功能的方法是什么? 请注意以下工作(我得到一个 Promise 对象): var Prom
..
我正在尝试使用 Promise 实现一个 while 循环. 这里概述的方法似乎有效.http://blog.victorquinn.com/javascript-promise-while-loop它使用了这样的函数 var Promise = require('bluebird');var promiseWhile = 函数(条件,动作){var 解析器 = Promise.defer
..
所以,我希望我的第一级捕获是处理错误的捕获.无论如何,是否可以将我的错误传播到第一个捕获? 参考代码,不工作(还): Promise = require('./framework/libraries/bluebird.js');函数承诺(){var promise = new Promise(function(resolve, reject) {throw('哦不!');});promis
..
我正在使用 bluebird,我看到了两种将同步函数解析为 Promise 的方法,但我不明白这两种方法之间的区别.看起来堆栈跟踪有点不同,所以它们不仅仅是一个别名,对吧? 那么首选的方式是什么? 方式 A function someFunction(someObject) {返回新的承诺(功能(解决){someObject.resolved = true;解决(一些对象);});}
..
在 Node.js 添加对 promise 的原生支持后,还有理由使用 Q 或 BlueBird 之类的库吗? 例如,如果您正在启动一个新项目,并且假设在该项目中您没有任何使用这些库的依赖项,我们是否可以说真的没有更多理由使用这些库? 解决方案 古老的格言说,您应该为工作选择正确的工具.ES6 承诺提供了基础知识.如果您想要或需要的只是基础知识,那么这应该/可以为您工作.但是,工具箱
..
这是我第一次尝试嵌套 promise.我正在使用 bluebird 库,但我认为所有 Promise 库的想法都是一样的. 在高层次上,这就是我想要做的: myService.getSomeData(url).then((数据) => {myOtherService.getMoreData(data.uniqueId).then((thisDataIsAnArray) => {//遍历上面
..
无论是 ES6 Promise 还是 bluebird Promise、Q Promise 等 我如何测试一个给定的对象是否是一个 Promise? 解决方案 promise 库如何决定 如果它有一个 .then 函数 - 那是 唯一 使用的标准承诺库. Promises/A+ 规范有一个名为 thenable 的概念,它基本上是“具有 then 方法的对象".Promi
..
我的 Redis 有很多某种格式的键,我想获得匹配某种模式的键并对它们进行一些操作.我不使用 KEYS 方法,因为它不推荐在生产中使用.使用 SCAN 我想知道用代码编写它的最佳方法是什么.我必须做一些类似 while 循环的事情,但是使用 promises,我当前的解决方案看起来像这样(代码稍微简化了一点): '使用严格'const Promise = require('bluebird');
..
让当前产品;for (let i = 0; i {更新(订阅,当前产品);});} 我正在使用 bluebird,方法 getAll 和 update 返回承诺.我怎么能说“等到两个承诺返回,然后更新 currentProduct 值"?我对 JS 很陌生... 解决方案 如果您可以使用 async/await,这将很简单: //确保此代码在使用声明的函数内//`async` 关键字
..
我正在使用生成器和 Bluebird 编写代码,我有以下内容: var async = Promise.coroutine;功能客户端(请求){this.request = 请求;}Client.prototype.fetchCommentData = async(function* (user){var country = yield countryService.countryFor(use
..
作为节点程序员.我习惯于使用“nodebacks"来处理我的代码中的错误: myFn(param, function(err, data) {如果(错误){//错误处理逻辑}别的 {//商业逻辑}}); 在编写该函数时,我可以执行以下操作: var myFn = function(param, callback){var calc = doSomeCalculation(param);if(
..
我编写了以下 node.js 文件: var csv = require('csv-parser');var fs = require('fs')var Promise = require('bluebird');var filename = "devices.csv";无功设备;Promise.all(read_csv_file("devices.csv"), read_csv_file("b
..