Articles of es6 promise

Node.js:如何在不获取UnhandledPromiseRejectionWarning的情况下返回被拒绝的承诺

我有一个使用request-promise-native模块查询couchdb数据库的模块中的函数: userByEmail: (email) => { const options = { url: `${config.couchdb.url}/medlog/_design/user/_view/by_email_or_userid?key="${email}"`, json: true, }; return rp.get(options) .then(users => users.rows.map(row => row.value)) .catch(reason => Promise.reject(new Error('test'))); } 第二个模块包含一个使用第一个模块的函数: router.get('/checkEmailExistence', (req, res) => { couchdb.userByEmail(req.param('email')) .then((userArray) => { res.status(200).end(userArray.length > 0); // returns 'true' if at least one user found }) .catch((e) => { winston.log('error', e.message); res.status(500).end(e.message); […]

async调用基类的构造函数之后,无法在子类上设置属性。 NodeJS v8.2.1

你可以请帮忙了解什么可能是错误,而在父类的callback中使用承诺,然后尝试设置子类的属性? 我正在使用nodejs v8.2.1 这里是基类的例子: class CGLBase extends CAuthClient { constructor(req, res) { return new Promise(resolve => { super(req, res, (authClient) => { this.setAuthClient(authClient); resolve(this); }); }); } setAuthClient(authClient) { //setting authClient (this.auth will contain property) } } 这里的子类的例子: class СSheet extends CGLBase { constructor(document, urlRequest, urlResponse) { super(urlRequest, urlResponse); this.document = document; this.someAnotherProp = "some […]

如何根据promise做出asynchronous函数

问题是该function不会等待地图完成 我认为解决scheme是Promise.all但是我不知道如何使用这个function exports.createProduct = (data) => { var imgS3arr = []; //array which we waiting for data.img.map((img, i) => { fetch.remote(img).then((base) => { var buf = Buffer.from(base[0], 'base64'); var imgS3 = { Key: data.title + i, //TODO: add random Body: buf, ContentEncoding: 'base64', ContentType: 'image/jpeg' }; s3Bucket.putObject(imgS3, function (err, data) { if (err) { console.log(err); […]

UnhandledPromiseRejectionWarning:不清楚警告的文件或行

我得到了几个类似于这个错误的错误: (node:30892) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 5): SyntaxError 从这些问题( 什么是未处理的诺言拒绝和NodeJS未处理的 拒绝警告)看来,这些警告是由于没有一个承诺。 但是,这些警告没有问题所在的文件或行号。 有什么方法可以find/缩小它?

NodeJS / Javascript – 使用承诺来处理图像收集,然后保存汇总的结果

股票溢价 – 我试图用NodeJS处理图像集合(〜2000图像)。 我能够提取所需的信息,但我很难得到正确的时间,以便将结果保存到JSON文件。 接近尾声,你会看到 console.log(palette); // Push single image data to output array. output.push(palette); console.log工作正常,但是在将空的output数组写入data.json之后,似乎执行了push方法。 试过有一个嵌套的承诺,我不会写文件,直到所有的图像已被处理。 getPixels中的callback函数是asynchronous执行的。 输出数组的顺序是任意的。 任何和所有帮助非常感谢! 谢谢! // Extract color information from all images in imageDirectory var convert = require('color-convert'), fs = require('fs'), getPixels = require("get-pixels"), startTime = Date.now(); var processedImages = new Promise((resolve, reject) => { var imageDirectory = 'input', […]

Cryptographer TypeError:第一个参数必须是一个string

所以我想创build一个pincode /密码散列的unit testing。 我之前遇到过这个错误,但是后来我用一个简单的.toString()函数解决了这个错误,但是现在看起来并不奏效。 这是我的一些代码相关的方法: pin.model.spec.js: let pin = Math.floor(1000 + Math.random() * 9000); let hash = await Pincode.getHashedPincode(pin.toString(), salt); crypto.js: function getPasswordHash(password, salt) { return new Promise((resolve, reject) => { crypto.pbkdf2(password, new Buffer(salt, 'hex'), iterations, keyLength, 'SHA1', (err, result) => { if (err) { return reject(err); } return resolve(result.toString('hex')); }); }); } 不要担心不一致的方法名称,它们之间有一个名为getHashedPincode的方法,除了调用getPasswordHash命名约定外, variablesiterations和keyLength来自一个常量文件。 […]

什么是明确的承诺build设反模式,我如何避免它?

我正在编写的代码看起来像这样: function getStuffDone(param) { | function getStuffDone(param) { var d = Q.defer(); /* or $q.defer */ | return new Promise(function(resolve, reject) { // or = new $.Deferred() etc. | // using a promise constructor myPromiseFn(param+1) | myPromiseFn(param+1) .then(function(val) { /* or .done */ | .then(function(val) { d.resolve(val); | resolve(val); }).catch(function(err) { /* .fail */ | […]

NodeJS中的嵌套promise

我在NodeJS中编写一个服务,它检索一个Items列表。 对于每一个,我必须创build一个计数器,指示可用项目的数量。 所以,如果商品出现在商店里,柜台只是增加和解决承诺(因为我相信最多只有一个库存)。 否则,如果在库存中,我必须检查可用件的确切数量。 如果它不是以前的两个案例之一,我会解决承诺,然后转到下一个项目。 问题在于第二种情况,因为在解决(当前项目的)主要承诺之前,我必须等待调用来检索仓库中的零件计数器。 由于它是一个asynchronous代码,当它进入第二个“else”时,它会触发库存中的计件器的调用,并立即parsing承诺,而不用等待调用结束。 我怎样才能解决这个承诺的连接? 这是代码: let promises: any[] = []; for (let i = 0, itemsLength = itemList.length; i < itemsLength; i++) { let currentItem = itemList[i]; promises.push( new Promise(function(resolve: Function, reject: Function) { act({ …call the service to retrieve the item list }) .then(function(senecaResponse: SenecaResponse < any > ) { […]

不能通过npm安装mongoose – 依赖失败es6-promise 3.0.2

我目前正在尝试使用教程build立一个MEAN堆栈,但是我得到了一些依赖性问题,因为我是nodejs和mondodb中的一个newby,所以我不能修复它。 我正在使用这个教程: https : //thinkster.io/mean-stack-tutorial build立: Windows 7 x64 MongoDB 2.6.11 (The tutorial require 2.6.7, so I didn't install the v3) node -v: v0.12.5 npm -v: 2.11.2 问题:当我尝试运行 npm install –save mongoose 我有这个错误: npm ERR! version not found: es6-promise@3.0.2 如果我跑 npm install es6-promise 它在我的package.json中设置了v2.3.0,并且mongoos仍然没有安装 "es6-promise": "^2.3.0", 如果我尝试在^ 3.0.0强制执行,并运行npm install "es6-promise": "^3.0.0", 它说: npm ERR! notarget […]

在Node.js中设置模型的正确方法

我正在构build一个小型的Node / Express应用程序,并且已经使用postgresql适配器设置了Knex。 这一切工作。 我知道它的工作原理,因为我可以做一个SQL查询,结果是我想要的 – 特定表中的行。 但是我试图build立模型,以便我可以引入相关数据并进行validation。 我为此使用书架。 我已经build立了这样的模型: base.js var knex = require('../../config/db'); var bookshelf = require('bookshelf')(knex); bookshelf.plugin('registry'); module.exports = bookshelf; food.js var bookshelf = require('./base'); var Meal = require('./meal'); var Food = bookshelf.Model.extend({ tableName: 'foods', meal: function() { return this.belongsTo(Meal); } }); module.exports = bookshelf.model('Food', Food); meal.js var bookshelf = require('./base'); var […]