Tag: bluebird

将BlueBird同步链接在一个数组中

我试图让一系列的同步执行的承诺,链接在一起,但只有基于条件添加某些承诺。 下面是我的意思的例子: const Promise = require('bluebird') const funcA = int => new Promise( res => res(++int) ) const funcB = int => new Promise( res => res(++int) ) const funcC = int => new Promise( res => res(++int) ) let mainPromise = funcA(1) // Only execute the funcB promise if a condition is true if( […]

Nodejs蓝鸟诺言在处理图像时失败

//Created a promise for each image size. var promises = sizes.map(function (size) { return new Promise(function (resolve, reject) { var destinationDir = fileUtil.getAbsolutePathOfImage(destinationPath); fileUtil.createDirectoryIfNotExists(destinationDir); destinationDir += size.src; fileUtil.createDirectoryIfNotExists(destinationDir); //Resize the image. //console.log('imagefile : ' + JSON.stringify(imageFile)); //console.log('destinationDir: ' + JSON.stringify(destinationDir)); //Called an imageUtil resize method to perform resize. imageUtil.resize(imageFile, destinationDir, size).then(data => { var fileName […]

Bluebird.js未处理拒绝错误使用请求

我正在尝试调用API来获取一些数据。 当通话返回有效的数据,它的工作原理! 但是,当它遇到一个API错误,或者我想创build基于数据响应的错误,我得到这个错误: Unhandled rejection Error: Data not found! at Request.request.post [as _callback] . . 这些是我正在使用的文件: let grabSomeData = new BluebirdPromise((resolve, reject) => { pullers.grabData(dataID, (err, res) => { if (err) { return reject(err); } return resolve(res); }); }); grabSomeData.then((fulfilled, rejected) => { console.log('res: ' + fulfilled); console.log('rej: ' + rejected); }); 在我的另一个文件中,http请求, grabData(dataID, grabDataCallback) […]

蓝鸟,而不是Co在Coa?

似乎Bluebird与发生器/协程相关的function重叠。 蓝鸟被认为具有出色的速度性能,所以出于讨论的缘故(假设上述重叠前提是真实的),如果想在Koa中用Bluebird代替Co(Node.js上下文),是否可以很容易地完成而不会减lessKoafunction,如果是的话如何? (我的猜测是不能实际完成的,因为Koa是build立在Co之上的,并且没有明确地暴露它,但是Facade它。这样的replace看起来就等于用Bootstrap中的其他东西来代替jQuery)

通过蓝鸟提升aws-sdk

伙计们,我可以给SES打一个简单的电话: var Promise = require("bluebird"); var AWS = require('aws-sdk'); var SES = new AWS.SES(); SES.listVerifiedEmailAddresses(function (err, emails) { console.log(err,emails); }); 但是,当我尝试使用bluebird ,我得到以下内容: var Promise = require("bluebird"); var AWS = require('aws-sdk'); var SES = new AWS.SES(); var ses = Promise.promisifyAll(Object.getPrototypeOf(SES)); ses.listVerifiedEmailAddressesAsync().then(function (err,emails) { console.log('p',err,emails); }); 错误: Unhandled rejection TypeError: Cannot read property 'params' of undefined 那么,如何通过蓝鸟认可aws-sdk呢? […]

未定义的Restify返回值不是错误对象中的函数

我有一个下面的Restify自定义错误,正在抛给我的BlueBird Promise catch块。 var test = function() { respObject = { hello: { world: 'aasas' } }; throw new restify.errors.ServiceError(respObject, 422); } 然后在ServiceError中: function ServiceError(respObject, statusCode) { restify.RestError.call(this, { restCode: 'ApiError', statusCode, statusCode, message: 'Api Error Occurred', constructorOpt: ServiceError, body: { message: 'Api Error Occurrede', errors: respObject.toJSON() } }); this.name = 'CustomApiError'; } util.inherits(ServiceError, restify.RestError); […]

function类似Promise.some /任何未知数量的承诺

我正在node.js(V8.1.3)中创build一个脚本,它查看来自多个API的类似JSON数据并比较这些值。 更确切地说,我正在研究不同股票(实际上是encryption货币)的不同市场价格。 目前,我正在使用promise.all来等待来自各个API的所有响应。 let fetchedJSON = await Promise.all([getJSON(settings1), getJSON(settings2), getJSON(settings3) … ]); 然而,Promise.all抛出一个错误,如果只是一个承诺拒绝一个错误。 在蓝鸟docos有一个叫做Promise.some的函数,它几乎是我想要的。 据我所知,这需要一系列的承诺,并解决两个最快的承诺解决,否则(如果less于2个承诺解决)会引发错误。 问题在于,首先,我不希望最快的两个承诺解决了它返回的问题, 我希望任何成功的承诺被返回 ,只要有超过2个。这似乎是什么Promise.any除了最小计数为1(我要求最小计数为2) 其次,我不知道我会等待多less承诺(换句话说, 我不知道有多lessAPI将要求数据 )。 它可能只有2个,也可能是30个。这取决于用户的input。 目前写这个在我看来,可能只是一个方法来有一个承诺。任何2计数,这将是最简单的解决scheme。 这可能吗? 顺便说一句,不知道标题是否真的总结了这个问题。 请build议标题的编辑:) 编辑:我可能会写脚本的另一种方式是,前两个API加载开始得到计算,并推送到浏览器,然后每个下一个JSON加载和计算后。 这样我就不用等待所有的承诺,在我开始计算数据并将结果传递给前端之前,就完成了。 这可能与一个函数也适用于其他情况? 我的意思是这样的: 并行请求JSON … | —– JSON1 —— | | — JSON-失败— | > catch错误>做一些错误。 不影响下一个结果。 | ——- ——- JSON2 | >满足最低2个结果>计算JSON>到浏览器。 | ——- JSON3 ——— | […]

我如何链接多个承诺?

我不太清楚,也许我错过了一些显而易见的事情,但我无法弄清楚如何链接两个承诺。 我的基于callback的代码看起来像这样: async.series([ function (cb) { // Create the directory if the nodir switch isn't on if (!nodir) { fs.mkdir('somedirectory', function (err) { if (err) { log('error while trying to create the directory:\n\t %s', err) process.exit(0) } log('successfully created directory at %s/somedirectory', process.cwd()) cb(null) }) } cb(null) }, function (cb) { // Get the contents […]

Node.JS Express 4 – Mongoose不保存数据

我想用Express.JS 4和Bluebird在MongoDB中保存MongoDB中的数据。 我所做的就是这样 – 斌/ WWW var mongoose = require('mongoose'); mongoose.Promise = require('bluebird'); ……. ……. db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function() {// successfully connected! console.log("Successfully Connected to Mongo-DB"); }); 并在控制台中获取这个 – Successfully Connected to Mongo-DB` – So, MongoDB connected successfully 车型/ post.js var mongoose = require('mongoose'); var postSchema = new mongoose.Schema({ created_by: String, //should be […]

函数适用于Promises

我正在使用蓝鸟在Node.js中开发一个基于承诺的项目,而另一个项目则是由ES6提供的本地承诺。 在这两个中,我有一个链,我在以下forms查询数据库: some_function(/*…*/) .then(function () { return query("SELECT `whatever` FROM `wherever` ") }) .then(/*…*/) 请注意, query显然返回parsing为查询结果的承诺。 这在几个链中重复,我正在寻找一种方法来清理未使用的函数包装。 我自然使用Function.prototype.apply() ,但在这种情况下,当我尝试: .then(query.apply(this, ["SELECT * FROM … "])) .then(function(rows){ /*…*/ }) 链中的下一个函数将rows undefined为undefined 。 谢谢你。 你的帮助表示赞赏。