Tag: q

Node中非常随机的行为,使用gm,buffers和promise

我最近把我的图像保存模块切换到gm (grahicsmagick),并开始使用缓冲区,而不是保存到磁盘。 我期望的输出是一个具有md5散列的数组,然后是原始图像和缩略图的path。 我用诺言,像这样。 saveOrig( imageUrl ) .then( saveThumb ) .then( function( image ) { var returnArray = [ image.hash, image.orig, image.thumb ] console.log( returnArray ) resolve( returnArray ) }) .catch( function( error ) { reject( new Error( error.message ) ) }) 这是第一个function,下一个几乎是相同的 function saveOrig ( imageUrl ) { return Q.Promise( function ( resolve, reject, […]

在node.js中使用q的空承诺

我尝试使用节点js来实现状态机。 简化我使用q和promise的callback。 在某些情况下,调用特定状态的函数什么也不做。 但要在控制stream程中使用它,我需要一个解决的承诺。 所以我的状态是这样的。 // onstate.js module.exports = function(){ this.switchOn = function(){ var deferred = Q.defer(); deferred.resolve(); return deferred.promise; }; this.switchOff = function(){ var deferred = Q.defer(); object.switchOff() .then(function(result){ // changing to off-state deferred.resolve(); }, function(err){ deferred.reject(err); }); return deferred.promise; }; } closuresfunction类似于Q实例中所述。 但是switchon函数呢? 我魔杖打电话给: currentState.switchOn().then(foo(), bar()); 我是否真的必须立即创build延期解决scheme,还是可以使用更简单的代码实现相同的行为?

如果承诺失败,在nodejs中重做任务,直到达到maxLimit

我有NetowrkIO和networking在这种情况下不可靠的function,所以这里它可能无法在第一次尝试,所以我需要重试,如​​果失败这里是伪代码 count = 0 maxLimit = 10 success = false while ( (success == false) && (count < maxLimit)) { try { doNetworkIO(arg) success = true } catch(ex) { count += 1 } } if( success == true ) { reportSuccess() } else { reportFailure() } 现在我试图在nodejs中做到这一点。 我search,并提出了承诺作为一种方式。 但是我不知道如何去做。 这是我的代码。 var count = 0 var […]

在javascript中返回一系列函数之后

我曾试图用q和async来做到这一点,但似乎无法使其工作。 试过后,我尝试了我自己的方式。 我不认为这会起作用,但我想我会试一试。 我感到困惑,因为在某种意义上,callback中存在callback。 这是我想要做的function: var getPrice = function(theData) { var wep = theData.weapon; var completed = 0; for (i = 0; i < theData.skins.length; i++) { var currSkin = theData.skins[i]; theData.skinData[currSkin] = {}; for (k = 0; k < wears.length; k++) { csgomarket.getSinglePrice(wep, currSkin, wears[k], false, function(err, data) { completed++; if (!err) { theData.skinData[data.skin][data.wear] […]

Q诺链错误后存在诺言链

我有一个node.js脚本,打开一个Azure容器,跨越多个不同国家的页面截图,同时将它们传输到Azure容器。 我遇到的问题是如果我在stream媒体过程中遇到错误,它完成该给定ID的剩余屏幕截图,然后退出承诺链。 所以,如果我在Id 211006遇到错误,它会完成所有截图,然后退出stream。 它不会继续。 我很新的承诺如何工作,他们是如何捕捉错误,但我的理解是,如果211006确实遇到错误,脚本将完成承诺链,然后在运行.fin之前显示我的任何错误 -事实并非如此。 任何人都可以帮忙吗? AzureService.createContainer() .then(function () { return ScreenshotService.getAllCountriesOfId('308572'); }) .then(function () { return ScreenshotService.getAllCountriesOfId('211006'); }) .then(function () { return ScreenshotService.getAllCountriesOfId('131408'); }) .then(function () { return ScreenshotService.getAllCountriesOfId('131409'); }) .then(function () { return ScreenshotService.getAllCountriesOfId('789927'); }) .then(function () { return ScreenshotService.getAllCountriesOfId('211007'); }) .then(function () { return ScreenshotService.getAllCountriesOfId('833116'); }) // Upload Log file […]

使用promise在nodejs中执行一系列命令

我想通过使用Q promise在nodejs中通过串行线路逐步处理一系列命令。 var cmdArr = ['cmd1', 'cmd2','cmd3']; 我不知道如何build立这个。 我想过这样的事情,但没有奏效: Q().then(function() { cmdArr.forEach(command) { //here to initialize the promise?? } }); 重要的是保持序列,并能够在每个步骤之间使用Q.delay。

当承诺链parsing时执行函数

我已经编写了使用Q.reduce机制的代码,其中函数insertItemIntoDatabase(item)返回parsing的promise。 items.reduce(function(soFar,item) { return soFar.then(function() { return insertItemIntoDatabase(item); }); },Q()); 是否有任何可能性等待链完成,然后执行另一个function,或者我应该用其他方式链接这些function。 提前感谢您的帮助

为什么在使用诺基亚时使用Q,蓝鸟框架?

在node.js学习承诺期间 我有一些疑问。 'promise'已经在node.js中定义了 但通常它似乎使用额外的承诺框架,如Q,蓝鸟,RSVP等 有什么理由吗? 核心node.js函数是不是可以用promise.denodeify函数来支持promise?

承诺如何在这种情况下实施?

我有一个同步使用fs.readfile的问题,他们不inenterizing第一次,如果我再次请求,然后我有结果。 我知道我可以使用承诺,我发现从Kriskowal Q有用。 我尝试过,但没有成功。 我不太清楚如何实现它。 如果有人可以帮助,我将永远感激。 码: "use strict" var Q = require('q'); var fs = require('fs'); var arrayZipBand = []; var jsonZipCode = []; var arrayParsedZipcodeBr = []; exports.parse = function(opts) { if (opts.zipBand.constructor != Array) { opts.zipBand = [opts.zipBand]; } if (opts.location.constructor != Array) { opts.location = [opts.location]; } if (opts.config === 0) […]

Q.allSettled是否会失败?

我在unit testing中看到过一些函数返回一个函数调用的q.allSettled() promise的.fail并附有一个.fail 。 但是.then即使某些/所有的承诺被拒绝,所有的人都会打电话给他。 这是一个例子: function someFunctionToTest(){ var aRejectedDeferred = Q.defer(); var anotherRejectedDeferred = Q.defer(); var aResolvedDeferred = Q.defer(); aRejectedDeferred.reject(new Error("I'm aRejectedPromise")); anotherRejectedDeferred.reject(new Error("I'm anotherRejectedPromise")); aResolvedDeferred.resolve({awesome:"I'm aResolvedPromise"}); return Q.allSettled([aRejectedDeferred.promise,anotherRejectedDeferred.promise, aResolvedDeferred.promise]) } it('should never fail', function(done) { someFunctionToTest() .then(function (data) { should.equal(data[0].state,'rejected'); should.equal(data[1].state,'rejected'); should.equal(data[2].state,'fulfilled'); // throw(new Error('I will trigger fail!!!')); done(); }) .fail(function (err) { […]