Tag: asynchronous

Q.all在forEach之前运行

我试图做一个承诺函数,读取电子邮件数组,然后find用户ID并将其推送到另一个数组。 问题是我的Q.all函数在_.forEach完成之前运行。 一探究竟: var deferred = Q.defer(), promises = [], _ = require('lodash'); _.forEach(users, function(user) { User.findOne({ username: user }, function(err, member) { if (err) console.log(err); var memberId = member._id; promises.push(members.push(memberId)); }); }); Q.all(promises) .then(function(promises) { deferred.resolve(promises); console.log(promises); // This always returns -> [] }) .catch(function(err) { deferred.reject(err); }); return deferred.promise; 所以每次我尝试console.log我承诺的数组,我得到一个空的数组。 我什至试图使用JavaScript本地forEachfunction,但它没有工作。 是否每个问题或Q.all是这种情况下适当的function? 提前致谢。 […]

当文件被写入时如何处理readFile

这可能有点模糊,但我有一个节点的应用程序,写了一个小的计数器后,一堆文件: Fs.readFile( Blender.LOG , function(error, data) { //read the log file if( error ) { throw error; } counter = parseInt( data ) + 1; //add this blend if(!isNaN( counter )) { //check if the number is a number Fs.writeFile( Blender.LOG, counter, function(error) { if( error ) { throw error; } Blender.debugging( 'counter: added', 'report' […]

Node.jsasynchronous的瀑布()callback已被调用

我在昨天的node.js上使用async模块来处理asynchronous任务的顺序。 下面的代码工作,但错误: callback已被调用 显示约1至5次。 我不知道问题出在哪里,也许在getNewsTitles()调用forEach循环的callback不只是一次。 所以我把console.log放在这里,但是这个日志只打印一次,不pipe是否显示错误。 async.waterfall([ function(callback) { callback(); }, function(callback) { // When error, below log doesn't show. console.log('getting news titles…'); getNewsTitles(arr_uri, arr_subs, function() { // * The problem is here => "Callback was already called" callback(null); }); } ], function(err, result) { if (err) return next(); else res.send(arr_subs); }); function getNewsTitles(targets, subs, […]

在Angular中传回给callback的数据是未定义的

我在Node.js中有这个端点: usersRoute.get('/get', function(req, res) { //If no date was passed in – just use todays date var date = req.query.date || dateFormat(new Date(), 'yyyy-mm-dd'), search = req.query.search; users.getAllUsers(date, search) .then(function(results) { res.json(results); }, function(err) { res.status(500).json({ success: false, message: 'Server error.', data: [] }); }); }); 出于testing目的,我错误地命名了我的SQL表,所以它会去function(err){} 我的服务function看起来像这样 function getUsers(date, search) { return $http.get('/api/users/get', { […]

Gulp如何知道asynchronous依赖任务何时完成(特别是“gulp-connect”)?

学习Gulp,我看到这个简单的例子,在完成第一个任务后运行第二个任务: var gulp = require('gulp'); var connect = require('gulp-connect'); // First task gulp.task('connect', function() { // No callback is provided to Gulp to indicate when the server is connected! connect.server(); }); // Second task runs after the first task 'completes' gulp.task('open', ['connect'], function() { // vvv // Question: since no callback is provided to indicate […]

Nodejs识别asyntasks的输出

我是nodejs的新手,我使用请求nodejs api发出多个get请求,用这个,我无法弄清楚某个特定请求的输出。 如何分别识别每个请求的响应? 我正在使用for循环发送多个请求。 如果我使用recursion,它再次成为同步,我只需要分开请求与响应太asynchronous。 可能吗 ? 在下面的代码中,variables'i'被上次迭代replace。 var list = [ 'http://swoogle.umbc.edu/SimService/GetSimilarity?operation=api&phrase1=%20Mobiles%20with%20best&phrase2=Mobiles%20with%20best', 'http://swoogle.umbc.edu/SimService/GetSimilarity?operation=api&phrase1=%2520Mobiles%2520with%2520best&phrase2=what%20is%20a%20processor'] function ss(list){ for(var i in list) { request(list[i], function (error, response, body) { if (!error && response.statusCode == 200) { console.log( i + " " +body); } }) } }

(…)。然后在节点(expressJS)中不是函数

我正在使用promises的hope.js库。 问题是有时它返回以下错误: (…).then is not a function 。 我不知道为什么,我不得不做很多修补。 工作的方法的代码看起来像那些没有,唯一的区别是在这种情况下,我正在使用其他库: async.js 。 我的代码如下: 控制器: userstoryservice.deleteTaskByIdRemovedUS(userstoryexists).then(function (error, arraysresult) { if (error) response.status(error.code).json({message: error.message}); else response.status(200).json({message: 'deleted successfully}); }); 我的服务: exports.deleteTaskByIdRemovedUS = function deleteTaskByIdRemovedUS(userstoryexists){ var promise = new Hope.Promise(); var Task = mongoose.model('Task'); var obj = {}; obj.arrTasksIdsRemoved = []; obj.arrTasksIdsRemovedErrors = [];` async.each(userstoryexists.tasks, function (item, callback){ […]

在node.js中使用asynchronous模块

我知道这个asynchronous模块 ,每个人都在谈论它。 正如我所知下面的代码将触发2分贝调用完成时的callback。 async.parallel([ function(){ dbcall() }, function(){ dbcall() } ], callback); 但是使用asynchronous模块是必须的吗? 如果我正确包装我的代码,它也可以是asynchronous的。 就像我在控制器中写的一样 var Token = require('../models/token'); Token.getAllTokens(owner, function(err,callback){ var device_tokens = callback.token; GCM_call(device_tokens); //another ajax call }); 上面的代码将工作,我testing了它,GCM_call将等待getAllTokens后运行。 那么为什么要使用asynchronous模块? 只是为了使代码更易读?

节点asynchronousforEach – 如何迭代按键而不是值

我目前有以下的例子对象: "fruit" : [ { "bananas" : 2, "tomatoes" : 3 } ]; 比方说,我用下面的代码遍历它: console.log(fruit); async.forEach(fruit, function(item, callback) { console.log(item); callback(); }, function(err) { console.log("Iterating done."); } ); 我的输出如下: { 'bananas': 2, 'tomatoes': 3 } 2 3 Iterating done. 单独的console.log给了我需要的信息,但是async.forEach只给出了我的值。 是否有可能让async.forEach输出对象的键?

node.js中的asynchronous任务

我有四个同步工作的任务。 它看起来像这样: function createEntity(req, res, next) { validator.validateInternalProductRequest(req.body) .then((data) => feedbackSetting.getUrl(data)) .then((data) => bitlyService.shortenLink(data)) .then((data) => internalProductService.saveInternalProductRequest(data)) .then((data) => res.send(data)) .catch(err => { console.log(err); next(err) }); } 现在在第三和第四个任务之间,也就是在获得短链接之后,在保存到数据库之前,我需要执行一个任务,让我们说任务AS,我需要asynchronous运行。 第四个任务,即保存到数据库不应因此被阻塞。 现在这个任务是我要asynchronous做的,还有三个更多的任务:1.从db中获取设置2.作出curl请求3.在数据库中保存 这三个任务我可以使用async.waterfall或者我希望会有任何替代品? 我如何在上面提到的函数createEntity执行这个任务?