Articles of 承诺

我怎样才能与蓝鸟承诺分页?

我有类似的东西 new Promise (resolve, reject) -> trader.getTrades limit, skip, (err, trades) -> return reject err if err resolve trades .each (trade) -> doStuff trade limit设置为某个任意数字,例如10 , skip从0开始。 我想继续增加skip直到没有更多的trades 。 doStuff是我用来处理每笔交易的函数。 这是第一次,但我想以分页的方式获得更多的交易。 具体来说,我想运行trader.getTrades更高的skip直到trades.length为0

循环通过任务瀑布 – 承诺蓝鸟

我正在寻找循环通过蓝鸟一些任务,只是使用超时作为实验机制。 [不希望使用asynchronous或任何其他库] var Promise = require('bluebird'); var fileA = { 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five' }; function calculate(key) { return new Promise(function (resolve, reject) { setTimeout(function () { resolve(fileA[key]); }, 500); }); } Promise.map(Object.keys(fileA), function (key) { calculate(key).then(function (res) { console.log(res); }); }).then(function () { console.log('finish'); }); 结果是 finish, one, […]

使用节点请求下载图像,并使用fs Promisified,在Node.js中没有pipe道

我一直在努力成功地下载一个图像,而不用pipe道到fs。 这是我所完成的: var Promise = require('bluebird'), fs = Promise.promisifyAll(require('fs')), requestAsync = Promise.promisify(require('request')); function downloadImage(uri, filename){ return requestAsync(uri) .spread(function (response, body) { if (response.statusCode != 200) return Promise.resolve(); return fs.writeFileAsync(filename, body); }) .then(function () { … }) // … } 有效的input可能是: downloadImage('http://goo.gl/5FiLfb', 'c:\\thanks.jpg'); 我相信问题在于body的处理。 我曾尝试将其转换为Buffer ( new Buffer(body, 'binary')等),但都失败了。 感谢前方的任何帮助!

蓝鸟承诺 – 每个function

预先感谢您的帮助。 当使用蓝鸟承诺时,我有一系列的承诺运行。 在最后的承诺期间,我想为数组中的每个对象多次运行一个函数。 下面是伪代码: var userArray = [ { name: "John", email: "John@email.com" }, { name: "Jane", email: "jane@email.com" }]; var functionOne = function() { //returns Promsie object }; var functionTwo = function() { //returns promise object }; var createUser = function(user) { return User.findOrCreate({email: user.email},{ name: user.name, email: user.email }); }; functionOne() .then(functionTwo) .each(createUser(userArray)) […]

何时不使用承诺

在阅读了许多关于es6的承诺以及为什么要实现这些承诺的文章之后,我感到所有的(不重要的)javascript函数都应该是承诺的。 事实上,使用它们编写代码让我感觉很好,因为我避免了厄运的三angular形,并且看起来变得简洁明了。 (这真的使得关于执行的推理更简单)。 我没能find的是:什么时候不使用承诺? 我何时避免使用它们? 更新: 虽然我已经看到一些像API一致性的伟大点,我还没有find坚实的NO情况。 Lux的答案表明,获取事件发射器的操作应避免它们,因为反复出现的callback与promise不兼容。 不过,我觉得答案现在仍然缺乏实质性的检查(正确)。

如何用Bluebird提升NodeJS Express

我用Express来使用NodeJS,并使用Bluebird作为承诺。 我试图promisify应用程序对象如下,但一旦promisified函数总是抛出错误。 部分代码如下: var express = require('express'), app = express(), bodyParser = require('body-parser'), Promise = require("bluebird"); app.postAsync = Promise.promisify(app.post); app.postAsync('/api/v1/users/update').then(function(req, res, next) { // never gets here }) .catch(function(err) { console.log("doh!!!"); }); 我试图promisifyAll具有相同的效果。 为什么它失败了,有什么办法promisify后/得到?

Node.js:执行多个asynchronous操作的最佳方式,然后做别的事情?

在下面的代码中,我试图一次性创build多个(大约10个)HTTP请求和RSS分析。 我在我需要访问和parsing结果的URI数组上使用标准的forEach构造。 码: var articles; feedsToFetch.forEach(function (feedUri) { feed(feedUri, function(err, feedArticles) { if (err) { throw err; } else { articles = articles.concat(feedArticles); } }); }); // Code I want to run once all feedUris have been visited 我明白,一旦调用一个函数,我应该使用callback。 然而,在这个例子中,我能想到使用callback的唯一方法就是调用一个函数来计算它被调用了多less次,并且只有在调用与feedsToFetch.length相同的次数时才会继续。 。 所以我的问题是, 在node.js中处理这种情况的最好方法是什么 ? 最好没有任何forms的阻塞! (我仍然想要快速的速度)。 是承诺还是别的? 谢谢,丹尼

如何正确提交蓝鸟的JSON.parse方法

我试图promisify JSON.parse方法,但不幸的是没有任何运气。 这是我的尝试: Promise.promisify(JSON.parse, JSON)(data).then((result: any) => {… 但我得到以下错误 Unhandled rejection Error: object

Promise.coroutine如何支持生成器作为yieldable值?

Promise.coroutine支持Promise作为可产生的值types。 通过addYieldHandler(function handler) , Promise.coroutine也可以支持任何只能重新返回结果的types。 但我怎么能写一个yieldHandler,可以像co一样处理一个generatortypes呢?

CasperJS,并行浏览与testing框架

问题:我想知道是否有可能在一个脚本文件中使用testing框架进行并行浏览,所以使用tester模块和casperjstesting命令。 我见过一些人创build了两个casper实例: CasperJS同时请求和https://groups.google.com/forum/#!topic/casperjs/Scx4Cjqp7hE ,但正如文档中所述,我们不能创build新的casper实例在一个testing脚本。 所以我试着做一个类似的简单的例子 – 一个caspertesting脚本(只需复制并执行这个工作): var url1 = "http://casperjs.readthedocs.org/en/latest/testing.html" ,url2 = "http://casperjs.readthedocs.org/en/latest/testing.html" ; var casperActions = { process1: function () { casper.test.begin('\n********* First processus with our test suite : ***********\n', function suite(test) { "use strict"; casper.start() .thenOpen(url1,function(){ this.echo("1","INFO"); }); casper.wait(10000,function(){ casper.test.comment("If parallel, it won't be printed before comment of the second processus !"); […]