Tag: 蓝鸟

“Q.when”的蓝鸟相当于什么?

从Q切换到Bluebird ,我只是想确保它在文化上是正确的:是否有一个相当于Q.when(someValue); 或Q(someValue); ? 它是Promise.resolve(someValue); ?

将Q迁移到BlueBird(或Vow)

我目前在Node / amqp应用程序中使用Q promise库。 我已经读过,像BlueBird或者Vow这样的Q库的性能是不太好的。 不幸的是,我不知道如何使用BlueBird(或Vow)来取代我目前的Q使用模式。 这是一个例子: this.Start = Q(ampq.connect(url, { heartbeat: heartbeat })) .then((connection) => { this.Connection = connection; return Q(connection.createConfirmChannel()); }) .then((channel) => { this.ConfirmChannel = channel; channel.on('error', this.handleChannelError); return true; }); 我应该提到 – 我正在使用TypeScript …在这个例子中,我正在接受一个amqplib承诺,并创build一个Q承诺(因为我不喜欢amqplib承诺)。 我如何用BlueBird或Vow做到这一点? 另一个例子是: public myMethod(): Q.Promise<boolean> { var ackDeferred = Q.defer<boolean>(); var handleChannelConfirm = (err, ok): void => […]

试图了解如何promisification与BlueBird工作

我正在尝试使用Node.js的Bluebird库包裹我的头。 下面是一个简单的例子,不能像我所期望的那样工作。 var Promise = require("bluebird"); var myObj = { add: function(op1, op2) { return op1 + op2; } }; // Sync call to add method -> 7 console.log(myObj.add(3,4)); var myObjAsync = Promise.promisifyAll(myObj); // Async call to promisified add method -> nothing written to console myObjAsync.addAsync(2,3).then(function(data) { console.log(data); return data; }) 我要么承诺或与蓝鸟丢失一些(主要)的概念。 在此先感谢您的帮助。 编辑:修改(现在的工作版本)基于jfriend00的反馈。 var […]

蓝鸟Promisies crud使用nodejs,express和mongoose的例子

我的朋友们,不幸的是,我找不到任何关于如何在节点js express mongoose应用程序中实现蓝鸟承诺库的例子。 我的应用程序设置在mongoose模型,控制器和路线在不同的文件。 但是用mongoose来执行它,我只是不知道。 所以请有人告诉我它是如何使用的。 请看下面。 //express controller Article.js var mongoose = require('mongoose'), errorHandler = require('./errors'), Article = mongoose.model('Article'); exports.list = function(req, res) { Article.find().sort('-created').populate('user', 'displayName').exec(function(err, articles) { if (err) { return res.status(400).send({ message: errorHandler.getErrorMessage(err) }); } else { res.jsonp(articles); } }); }; // Mongoose Model /** * Module dependencies. */ var mongoose = […]

使用Bluebird.js和Twitterstream承诺和stream

我对Promise和Node是一个新超级新手,对于使用承诺和stream感到好奇。 我可以promisifystream? 使用Bluebirdjs和Twit模块我有以下几点: var Twit = require('twit') var Promise = require("bluebird"); var T = new Twit({ consumer_key: process.env.CONSUMER_KEY, consumer_secret: process.env.CONSUMER_SECRET, access_token: process.env.ACCESS_TOKEN, access_token_secret: process.env.ACCESS_TOKEN_SECRET }) Promise.promisifyAll(Twit); Promise.promisifyAll(T); var sanFrancisco = [ '-122.75', '36.8', '-121.75', '37.8' ] T.streamAsync('statuses/filter', { locations: sanFrancisco }) .then(function(connection){ connection.onAsync('tweet') .then(function (tweet) { console.log(tweet) }) }); 运行此代码不会logging推文,也不会引发错误。 没有任何事情发生,似乎有什么联系,但没有任何的承诺工作。 原始片段,在尝试实施在twit文件中发现的承诺之前 var sanFrancisco = […]

是否有可能在节点7中使用–harmony_async_await跨asynchronous/等待边界获取堆栈跟踪?

我们正在尝试在节点7中使用–harmony_async_await,并且与使用babel进行asynchronous/等待的传输进行比较,却缺less了具有长堆栈跟踪的function( http://bluebirdjs.com/docs/api/promise.longstacktraces.html )。 显然,如果有一个选项可以“只看到这个” – 在chrome(ium)方面,它们似乎支持它在检查器中,但是最新的工作是在v8 5.4之后(即不在节点7 ): https://bugs.chromium.org/p/v8/issues/detail?id=4483 https://codereview.chromium.org/2357423002/ 另一种方法是让v8使用蓝鸟的诺言实现 – 但我怎么能做到这一点? 重写global.Promise不会改变async / await的行为(他们仍然使用默认的promise)。

在Javascript中caching和预取过期的承诺

承诺是我在JavaScript中pipe理我的asynchronous代码的首选方式。 Memoize(npm上的memoizee)是一个Javascript库,用于轻松caching和预取函数的结果。 理想情况下,我想结合两者中的优点,并有能力“超期”承诺并预先获取新的Promise结果(当caching被触摸并即将到期时)。 Memoize可以做到这一点,但它不是build立在Promise的基础上。 (我知道Promise有一个内置的“永久caching”,就像它们的本质一样,但是对于我的应用来说永远太长了) 我迄今为止做的最好的尝试如下(使用蓝鸟 , memoize和下划线的 node.js示例): var memoize = require('memoizee') , Promise = require('bluebird') , _ = require('underscore') ; // returns a memoized Promise-generating function function memoizePromiser(funcReturningPromise, options) { var opts = _.defaults(options || {}, {async: true}); return Promise.promisify(memoize(function(){ var args = _.initial(arguments); var cb = _.last(arguments); funcReturningPromise.apply(this, args).nodeify(cb); }, opts)); }; […]

什么是使用Promise的“超时间隔”的好模式

我正在写一些代码,每N毫秒轮询一个资源,这应该在M秒后超时。 我希望整个事情尽可能地使用蓝鸟的承诺。 到目前为止,我所提出的解决scheme使用节点间隔,可取消的蓝鸟许诺和蓝鸟的超时function。 我想知道是否有更好的方法来做蓝鸟和一般的承诺超时间隔? 主要是通过确保时间间隔停止在这一点,永远不会无限期地继续下去。 var Promise = require('bluebird'); function poll() { var interval; return new Promise(function(resolve, reject) { // This interval never resolves. Actual implementation could resolve. interval = setInterval(function() { console.log('Polling…') }, 1000).unref(); }) .cancellable() .catch(function(e) { console.log('poll error:', e.name); clearInterval(interval); // Bubble up error throw e; }); } function pollOrTimeout() { return […]

如何打破承诺内的循环?

我正在做一个使用蓝鸟库的QA(问题/答案)应用程序。 所以这里的情况是: 用户用一些问题的答案填写表格(例如5个问题)。 一个问题有超过1个可能的答案:“问题有很多答案” 答案在数据库上使用node.bcryptencryption(bcrypt) 循环播放答案时,如果用户答案匹配,则不需要继续检查该问题的答案。 所以在做同步的时候,解决这个问题是一个普遍的问题,但是我有点失落,要做与承诺的asynchronous。 以下是我不知道如何进行的一个示例: .then(function(answers) { var compare = Promise.promisify(bcrypt.compare); // foreach answer, I need to check like this // compare(answer.password, user.password).then(function(match){ // if (match) break; <– something like this // }) })

如何使用lodash或下划线同步迭代数组

我有一个数组,其中包含每个索引的文件名。 我想一次一个 (同步)下载这些文件。 我知道' Async '模块。 但是我想知道在Lodash或Lodash或Bluebird库中的任何函数是否支持这个function。