Tag: 蓝鸟

如何使用请求库和Bluebird发送发布请求?

所以inheritance人我的设置: var Promise = require("bluebird"); var request = Promise.promisify(require('request')); 这工作: request('url') 它返回一个承诺 这不: request.post('url', {form: {type: 'artist'}}) 给我这个错误: TypeError: Object function promisified(_arg0,_arg1) { … }has no method 'post' at /Users/beamer30/projects/wevo/controllers/music.js:85:30 at Array.map (native) at MusicSearch.spotifyRelated (/Users/beamer30/projects/wevo/controllers/music.js:84:22) at MusicSearch.findRelatedArtists (/Users/beamer30/projects/wevo/controllers/music.js:48:7) at musicController.search (/Users/beamer30/projects/wevo/controllers/music.js:100:17) at Layer.handle [as handle_request] (/Users/beamer30/projects/wevo/node_modules/express/lib/router/layer.js:76:5) at next (/Users/beamer30/projects/wevo/node_modules/express/lib/router/route.js:100:13) at Route.dispatch (/Users/beamer30/projects/wevo/node_modules/express/lib/router/route.js:81:3) at Layer.handle […]

承诺 – 在Promise中捕获所有的拒绝。所有

我有这个虚拟代码 var Promise = require('bluebird') function rej1(){ return new Promise.reject(new Error('rej1')); } function rej2() { return new Promise.reject(new Error('rej2')); } function rej3() { return new Promise.reject(new Error('rej3')); } Promise.all([rej1(),rej2(),rej3()] ).then(function(){ console.log('haha') },function(e){ console.error(e); }) 在拒绝处理程序中,我只看到第一个拒绝。 是否有可能查看所有三个拒绝?

promise链里面的返回值没有被调用

我正在使用承诺库蓝鸟,我目前正在运行的问题,该函数内的一切运行良好,但当我尝试返回一个值,该函数返回undefined 。 这是承诺链: function foo() { createGroupMembers(parsedChat).then(function(val) { var members = val; createMessages(parsedChat, maxPages).then(function(val) { var messages = val; Promise.all([ createFrontCover(subject, firstdateOfMessages, lastDateOfMessages, isPreview), createStats(parsedChat), createBackCover(parsedChat)]) .then(function (results) { var front = results[0]; var stats = results[1]; var backcover = results[2]; var book = head + front + stats + members + messages + backcover; […]

用蓝鸟实现request.postAsync承诺

我正在使用bluebird promises框架来发出POST请求并获得对该POST请求的响应: var Promise = require('bluebird'); var request = Promise.promisifyAll(require('request')); // Set the headers var headers = { 'User-Agent': 'Super Agent/0.0.1', 'Content-Type': 'application/x-www-form-urlencoded' } var options = []; var scores = []; // Configure the request options[0] = { url: 'https://api.havenondemand.com/1/api/sync/analyzesentiment/v1', method: 'POST', headers: headers, form: {'apikey': 'XXXXXXXXXXX', 'text': 'I love dogs'} } // Start […]

node.js + request => node.js + bluebird +请求

我试图了解如何用promise来编写代码。 检查我的代码PLZ。 这是对的? Node.js +请求: request(url, function (error, response, body) { if (!error && response.statusCode == 200) { var jsonpData = body; var json; try { json = JSON.parse(jsonpData); } catch (e) { var startPos = jsonpData.indexOf('({'); var endPos = jsonpData.indexOf('})'); var jsonString = jsonpData.substring(startPos+1, endPos+1); json = JSON.parse(jsonString); } callback(null, json); } else { […]

如何从嵌套的诺言中返回值?

我在Redis中有一组电影ID: [1,2,3,4]和一组具有实际数据的哈希值。 现在,我想一次获取所有ID的电影数据。 我正在尝试使用蓝鸟promisses,但我卡住了。 到目前为止,我有: 函数allMovies(){ var电影,movieIds; 返回client.smembersAsync('movies.ids')。then(function(ids){ movieIds = ids; movies = _.map(movieIds,function(id){ var电影; return client.hmgetAsync(“movies:”+ id,'title','description','director','year')。done(function(data){ 电影=数据; 返回{ 标题:data [0], 描述:data [1], 导演:资料[2], 年份:数据[3] }; }); 返回电影; }); }) 问题出在我所尝试的方面,我总是得到一个新的承诺,而所有的操作完成后,我只是对JSON感兴趣。 这里的任何人都可以解释一下这个问题?

使用node.js,stream和承诺下载文件

这是我的代码片段: var processListing = function (directoryItems) { console.log('foreach'); var itemsToDownload = []; directoryItems.forEach(function (element, index, array) { //Ignore directories if (element.type === 'd') { console.log('directory ' + element.name); return; } //Ignore non zips if (path.extname(element.name) !== '.zip') { console.log('ignoring ' + element.name); return; } //Download zip itemsToDownload.push({ source: element.name, destination: element.name }); //aftpSystem.downloadFile(element.name, element.name); }); […]

如何避免在JavaScript应用程序中丢失“this”上下文?

这是我的代码示例: function QueueService() { var key = Config.get("AWS.accessKeyID"); var secret = Config.get("AWS.secretKey"); var credentials = new AWS.Credentials(key, secret, sessionToken = null); this._sqs = new Promise.promisifyAll(new AWS.SQS({apiVersion: '2012-11-05', region: "us-west-2", endpoint: "sqs.us-west-2.amazonaws.com", credentials: credentials})); } QueueService.prototype.FillBirdQueue = function(birds) { var self = this; birds.forEach(function(bird_batch) { var params = { Entries: bird_batch, QueueUrl: Config.get("AWS-Queue.Birds") }; return self._sqs.sendMessageBatchAsync(params); […]

如何在上传之前validation文件types使用SailsJS Skipper

作为标题,现在我无法检查上传之前的文件types。 我只validationfile upload成功后不允许保存数据。 以下是一个基本的代码 updateAvatar : function(data, context, req, res) { req.file('avatar').upload({ dirname: '../../assets/images/avatar' }, function (err, files) { var allowExts = ['image/png', 'image/gif', 'image/jpeg']; if (err) return res.serverError(err); if (files.length === 0) return res.badRequest('No file was uploaded!'); if (allowExts.indexOf(files[0].type) == -1) return res.badRequest('File type is not supported!'); // save database here }); } 我应该怎样做正确的代码? […]

包裹在承诺的JavaScript通用函数

如何将可以同步/同步function的函数封装在promise中? 我已经打电话给如下function action[fn](req, res); 在函数fn(在下面的例子中)可以在里面(我使用dynamic调用每个函数)同步或者像下面那样的同步, 它如何推荐包装在承诺。 如何处理错误,如果有… 我使用nodeJS应用程序 run: function (req, res, filePath) { var writeStream = fs.createWriteStream(fileRelPath, {flags: 'w'}); req.pipe(writeStream); req.on("end", function () { console.log("Finish to update data file") }); res.end("File " + filePath + " saved successfully"); }