async.retry({times : 25,interval : 30000},myFunction.bind(functionData),function(err,results){ console.log("===================================") console.log("Async function finished processing") return; }) myFunction被立即调用,这也是默认的5倍。 通话之间也没有等待期
我目前在框架Sails.js Node.JS做一个API。 我第一次使用承诺,我有一些麻烦,像我想要的同步我的承诺。 我的主要function如下: createCard: function(req, res) { checkIfUserHasStripeAccount(req.user) .then(addCreditCardToStripeAccount()) .then(function cardCreated() { res.send(200, { msg: 'Card created' }); }) .catch(function handleError(err) { res.send(err.httpCode, err.msg); }) }, 很明显,如果用户没有信用卡,就无法将信用卡添加到条形账户。 函数checkIfUserHasStripeAccount()检查账户是否存在,如果没有,创build它。 这是这部分的代码: function checkIfUserHasStripeAccount(user) { var deferred = q.defer(); if (!user.idStripe) { createStripeAccountToUser(user) .then(function(savedUser) { deferred.resolve(savedUser); }) .catch(function(err) { deferred.reject(err); }) } else { deferred.resolve(user); } return […]
我编写了下面的代码来创buildKEYS设置为注释标题的对象和VALUES设置为共享这些标题的文件。 如果没有标题,文件名将被写入文件。 我想写这个头对象到文件,但它是在对象完成之前写入的。 我明白为什么会发生这种情况,但我似乎无法解决这个问题。 以下是将对象写入文件的代码: stringObj = JSON.stringify(allHeaders, null, 4); fs.writeFile(currentHeads, stringObj, function(err) { if (err) { console.log(err); } }); console.log('Complete!'); 这是脚本的其余部分: "use strict"; var fs = require('fs'), dive = require('dive'), subdirs = require('subdirs'), cpFile = __dirname + "/" + "header.txt", noCopy = __dirname + "/" + "noCopyright.txt", currentHeads = __dirname + "/" + "currentHeaders.txt", […]
我有一个Web服务器,接受来自客户端的图像,处理它们,将它们上传到S3,批量插入到我的mongoDB,最后发送到客户端的JSON结果。 使用单个图像的工作如下: router.post("/upload", function(req, res){ var form = new multiparty.Form(); form.parse(req,function(err,fields,files){ s3.upload({ Key: filename, Bucket: bucketname, ACL: "public-read", Body: fs.createReadStream(filepath) }, function(err, data){ if(err) //error handle Model.collection.insert({"name": "name", "url" : data.Location}, function(err, result){ if(err) //error handle res.json({result: result}) }) }) }) }) 这工作得很好,因为我简单地上传文件数据到s3 – >完成后,插入s3的输出(url)到数据库 – >完成后,将mongo的结果作为jsonarray发送到客户端。 问题是 – 我的客户端HTML除了多个type=fileinput相同的name=images ,以便我可以在我的表单parsing器中访问它们作为images[i] 。 上述algorithm重复images.length次。 当我不得不等待所有的asynchronousS3上传 – […]
我一直试图在我的进程终止之前执行asynchronous操作。 说'终止'我的意思是一切终止的可能性: ctrl+c 未捕获的exception 崩溃 代码结束 什么..] 据我所知, exit事件,但同步操作。 阅读Nodejs文档我发现beforeExit事件是为asynchronous操作但是: “beforeExit”事件不是针对导致显式终止的条件发出的,例如调用process.exit()或未捕获的exception。 除非意图安排额外的工作,否则“beforeExit”不应该被用作“退出”事件的替代scheme。 有什么build议么?
我不明白为什么expressjs在抛出async.waterfall时不处理错误 var express = require('express') , app = express.createServer() , async = require('async'); app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); app.get('/error', function(req, res){ throw Error('Aie'); }); app.get('/asyncerror', function(req, res){ var that = this; async.waterfall([ function(next){ console.log('1'); next("42", "2"); }, function(arg, next) { console.log(arg); res.json('ok'); } ], function(err){ console.log(this); throw Error('Aie'); }); }); app.listen(8888, function(){ console.log('Listen on […]
在NodeJS上工作了一段时间,我一直在想如何在内部处理文件操作。 考虑到下面的伪代码: initialize http server on connection: modify_some_file: on success: print "it worked" 让我们考虑几乎同时尝试访问该页面的两个用户A和B. 让我们进一步假设A是第一个连接,那么发生以下事情: A连接 NodeJS初始化文件操作,并告诉操作系统完成后通知操作系统 这是我想知道的:假设文件操作还没有完成,B连接,节点做什么? 如何在什么时候访问文件,还在进行“被修改”? 我希望我的问题有些清楚;)期待你的答案!
我需要跳过一个async.series的函数或突破,并想知道我应该如何去做。 我有一系列需要迭代的项目。 我把这个列表放在一个async.each函数中。 然后,数组中的每个项目在进行之前都会经过一系列所需的function(在下一个中需要一个信息)。 但是在某些情况下,我只需要通过第一个函数,如果不满足条件(例如,它是一个我们不使用的类),则callback到下一个项目的async.each循环。 这是我的代码的一个例子: exports.process_items = function(req, res, next){ var user = res.locals.user; var system = res.locals.system; var likes = JSON.parse(res.locals.likes); var thecat; //process each item async.each(items, function(item, callback){ //with each item, run a series of functions on it… thecat = item.category; async.series([ //Get the category based on the ID from the DB… […]
我有一个nodejs应用程序,其中res.render方法是以约400毫秒的阻塞方式。 我如何处理这个以非阻塞的方式执行? 我的apache基准testing需要12秒来执行大约30个并发请求。 我如何以更好的方式实现这一点? var start = +new Date; //fetch data from redis console.log('time taken to fetch data from redis ' + (+new Date – start)); //30 ms res.render('some_jade_view', params); console.log('time taken to render data ' + (+new Date – start)); //530 ms 我尝试了process.nextTick但是没有多大帮助,ab结果是一样的。
这个想法是使用Node.js实现一个QBWC Web服务,它可以以asynchronous方式服务多个传入的请求。 目前我正在研究qbws这是QuickBooks桌面Web连接器的Node.js Web服务。 关于如何扩展这个以支持服务方法的asynchronous体系结构的任何想法? 提前致谢!