Tag: 承诺

与本地承诺循环;

我试图做一个asynchronous循环与本地ES6承诺 这种作品,但不正确的。 我想我在某个地方犯了一个大错,我需要有人告诉我它在哪里以及它是如何正确完成的 var i = 0; //creates sample resolver function payloadGenerator(){ return function(resolve) { setTimeout(function(){ i++; resolve(); }, 300) } } // creates resolver that fulfills the promise if condition is false, otherwise rejects the promise. // Used only for routing purpose function controller(condition){ return function(resolve, reject) { console.log('i =', i); condition ? reject('fin') […]

cursor.toArray()返回一个promise而不是array

目前使用节点4.3.2和mongo 2.6。 我正试图获得一个完整的集合(目前在集合中的三个文档)。 当我使用这段代码时遇到了一个问题。 function checkUpdateTime(last_updated){ var collection = db.collection(last_updated); collection.insert({a:1}); updateTimes = collection.find({a:1}).toArray(); } var updateTimes = []; checkUpdateTime('last_updated'); console.log(updateTimes); 当这个代码是tun updateTimes是一个承诺,而不是我希望的数组。 目标是编辑数组,然后将其插回到集合中。插入语句有效,但是文档的检索根本无法按我期望的方式操作。 我已经尝试了这个代码的不less版本,但没有骰子。 我想这归结于我想知道为什么一个承诺被退回?

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

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

与Bluebird手动promisifying pg.connect

我想promisify node-postgres'pg.connect方法以及callback中提供的内部connection.query方法。 我可以将后者进行修改,但是我需要手动执行第一个(如果我在这里丢失了某些东西,请解释一下)。 事情是,我不确定这段代码是否正确或应该改进? 代码工作,我只是想知道,如果我使用蓝鸟的意思。 // aliases var asPromise = Promise.promisify; // save reference to original method var connect = pg.connect.bind(pg); // promisify method pg.connect = function (data) { var deferred = Promise.defer(); connect(data, function promisify(err, connection, release) { if (err) return deferred.reject(err); // promisify query factory connection.query = asPromise(connection.query, connection); // resolve promised connection […]

在承诺中返回promise和返回undefined之间的区别

我不太清楚这两种常见情况之间的区别。 说我们有这个: user.save().then(function(val){ anotherPromise1(val); }).then(function(val){ anotherPromise2(val); }).catch(function(err){ }); 与: user.save().then(function(val){ return anotherPromise1(val); }).then(function(val){ return anotherPromise2(val); }).catch(function(err){ }); 我知道这有所作为,但究竟如何?

将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 => […]

节点7.1.0新的Promise()parsing器未定义不是一个函数

我在OSX上使用最新的节点版本7.1.0,但是我仍然不能使用Promises。 我明白了 index.js new Promise(); 错误: new Promise(); ^ TypeError:Promise resolver undefined不是一个函数 节点7.1.0不支持ES6和Promise?

如何通过node.js中的本地promise来全局处理exception?

我知道如何处理承诺中的具体错误,但我有时看起来像这样的代码块: somePromise.then(function(response){ otherAPI(JSON.parse(response)); }); 有时,当JSON.parse throw s时,我得到无效的JSON,导致无声的失败。 一般来说,我必须记得在我的代码中添加一个.catch处理程序给每个单独的承诺,当我不知道我在哪里忘记了。 我如何在代码中find这些被抑制的错误?

使用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 = […]

Promise和nodejs MongoDB驱动程序

我想向MongoDB驱动程序作出承诺。 我写了下面的代码: var TaskBroker = function () { this.queueName = 'task_queue'; this.rabbit = {}; this.mongo = {}; }; TaskBroker.prototype.connectRabbit = function() { var self = this; return amqp.connect('amqp://localhost') .then(function(connection) { self.rabbit.connection = connection; return connection.createChannel() }) .then(function(channel) { self.rabbit.channel = channel; return channel.assertQueue(self.queueName, {durable: true}); }) }; TaskBroker.prototype.connectMongo = function() { console.log('Connect Mongo'); var self […]