Tag: 蓝鸟

request-promise未处理的拒绝RequestError:错误:ETIMEDOUT

嗨,我尝试编写一些下载function的承诺要求,但如果我有一个超时,我不能处理这个错误,我尝试一些例子,但仍然有这个错误 Unhandled rejection RequestError: Error: ETIMEDOUT at new RequestError (/home/parse/node_modules/request-promise-core/lib/errors.js:14:15) at Request.plumbing.callback (/home/parse/node_modules/request-promise-core/lib/plumbing.js:87:29) at Request.RP$callback [as _callback] (/home/parse/node_modules/request-promise-core/lib/plumbing.js:46:31) at self.callback (/home/parse/node_modules/request/request.js:186:22) at emitOne (events.js:101:20) at Request.emit (events.js:191:7) at Timeout._onTimeout (/home/parse/node_modules/request/request.js:816:16) at ontimeout (timers.js:380:14) at tryOnTimeout (timers.js:244:5) at Timer.listOnTimeout (timers.js:214:5) 我的代码 function下载: function downloadPhoto(url,uploadUrl,name){ return new Promise(function(resolve, reject){ rp(url,{timeout:15000},function(e){if(e) reject(e);}).on('error', function(e){return reject(e);}).pipe(fs.createWriteStream(name+'.jpg')).on('finish', () => { //console.log('done […]

可以通过蓝鸟的减法来解决依赖函数的数组吗?

任何人都可以澄清这个bluebird减lessfunction…它是如何工作的? 如何使用这个? 我希望这个函数像async.waterfall([ARRAY OF FUNCTIONS]) "use strict"; var Promise = require('bluebird'); var fs = Promise.promisifyAll(require('fs')); Promise.reduce([function() { return 'Hardy'; }, function(name) { console.log('0000' + name); return name + ' Jack'; }, function(fullName) { console.log('000011' + fullName); return fullName + ' Danial'; }], function(total, data) { console.log(total); console.log(data); }, 0).then(function(total) { }); 预期产出: 哈代Jack Danial

即使没有错误,承诺也会被拒绝。 的NodeJS

所以,我有一段使用Promises的代码,我正在使用bluebird库。 问题是,即使没有错误,我的承诺也会被拒绝。 即使是简单的console.log .then它也会完全跳过.then块 以下是使用诺言的代码: function returnMeetings(query) { return new Promise((reject, resolve) => { Meeting.find(query, (err, foundMeetings) => { if (err) { console.log("We have a error") reject(err); } resolve(foundMeetings); }) }) } 这里是使用returnMeetings函数的代码 returnMeetings(query) .then((data) => { console.log("here we are") // while (count < stopAt) { // let localData = []; // if (req.params.duration === […]

JS Promise waitFor刷新令牌

情况很简单: 我有一个nodejs服务器(称为API-A)使用蓝鸟作为承诺处理程序。 我有一个客户端(浏览器),通过从另一个API(API-B)获取数据的API-A询问数据。 API-B可以是来自示例的气象服务,然后API-A将数据与其他数据聚合并将其发送回客户端。 情况是下一个:API-B需要一个具有1800秒的TTL的令牌。 因此,对于客户端的每个请求,我检查我的令牌是否过期。 我有这样的代码: function getActivities() { return this.requestAuthorisation() .then(()=>{ // some other code that is not interesting }) } 一切工作都很好,承诺的荣耀。 requestAuthorisation()检查令牌是否有效(下一个!!!),如果没有(我做一个请求API-B刷新令牌)问题在于:在这个时间之间,令牌已经过期以及获得的时间一个新鲜的,有时会发生。 如果1000个客户端同时询问这些,我将有1000个令牌对API-B的请求,这不是很酷。 我怎样才能避免呢? 我尽量避免使用cron-way,避免不必要的调用,问题是一样的。 我尝试创build一个跟踪令牌刷新状态的全局variables(boolean),但不可能find一种Promise.WaitFor(variables更改)的Promise.all无法使用,因为我处于不同的事件范围。 有没有办法排队,直到令牌刷新? 请帮忙 !

蓝鸟承诺与callback发电机

我如何让蓝鸟自动将.nodeify / .asCallback添加到生成的承诺? 在bluebird中,任何promise实例都可以附加到节点callback机制上: Promise.resolve('foo').asCallback(callback); 然而,有时可能不需要定义承诺本身,而是一种被调用的方法,每次都会返回一个新的承诺,如下所示: // create a new random number promise each time Promise.method((foo, callback) => Math.random()); // create a new random number promise each time using a generator Promise.coroutine(function *(foo, callback) { return Math.random(); }); 在这种情况下,如果我想附加一个callback处理程序的承诺,我不得不这样做“人为地”在最后,使用像这样一个临时的方法: // create a new random number promise each time using a generator Promise.coroutine(function *(foo, callback) { […]

等待蓝鸟执行所有的承诺

我想等所有的承诺解决或拒绝,并得到解决承诺的结果在.then和错误“ 'use strict'; const Promise = require('bluebird') var delayOne = Promise.method((p = 1) => p); var delayTwo = (p = 1) => { throw new Error('asf'); }; Promise.all([delayOne(100), Promise.method(delayTwo)(10), delayOne(300)]) .then((res) => console.log(res)) // no logs from here .catch((e) => console.log(e)) .done(); 但我只从.catch获取日志。 我的错误在哪里?

如何推迟承诺,直到async.each完成?

如何在asynchronous操作完成之前延迟承诺? 我正在使用asynchronous和蓝鸟图书馆。 只要我启动我的程序,done()函数返回一个空的或接近空的'masterlist'对象的错误。 为什么在迭代器完成操作之前不是asynchronous等待呢? // bundler.js var masterlist = { "children": [] , "keywords": [] , "mentions": 0 , "name" : "newsfeed" , "size" : 0 } // initialize() returns a promise with the populated masterlist exports.initialize = function() { return new Promise(function(resolve, reject) { // pullBreakingNews() returns a promise with the breaking news articles […]

承诺抛出未处理的错误的解决

我有下面的代码,但是当parsing被调用时,它抛出: Possibly unhandled Error: undefined at Promise$_rejecter (c:\projects\Test\promiseftp\node_modules\bluebird\js\main\promise.js:602:58) at WriteStream.<anonymous> (c:\projects\Test\promiseftp\index.js:45:33) at WriteStream.EventEmitter.emit (events.js:117:20) at fs.js:1598:14 at Object.oncomplete (fs.js:107:15) 代码如下: var Client = require('ftp'); var path = require('path'); var fs = require('fs'); var Promise = require('bluebird'); var c = new Client(); var connectionProperties = { host: "myhost", user: "myuser", password: "mypwd" }; c.connect(connectionProperties); var downloadFiles […]

在arrays上推送相同的函数时调用asynchronous函数

我有这个代码: var queue = []; var allParserd = []; _.each(webs, function (web) { queue.push(function () { WebsitesUtils.parseWebsite(web, function (err, parsed) { allParserd.push(parsed); }); }); }); Promise.all(queue).then(function (data) { console.log(allParserd); }); 基本上我需要抓取我所有的网页,并确保在完成每个parsing之后给出结果。 函数parseWebsite返回正确的数据,但是这样不被调用, allParsed只返回一个空数组。 我相信我错过了一些事情,我已经开始使用诺言了,只是有些日子。 如果您需要更多信息,请告诉我。 Ps我想要所有的function同时启动; 我不想等待每一个回应。

雷迪斯多蓝鸟承诺

你知道一个使用Redbird客户端的多重交易命令蓝鸟承诺的方法吗? 因为,下面的代码永远不会结束。 var $redis = require('redis'), $p = require('bluebird'), $r = $p.promisifyAll($redis.multi()); $r.setAsync('key', 'test') .then(function(reply, data) { // … }); $r.exec(function() { $r.quit(); process.exit(); });