Tag: asynchronous

如何从Node.js中的asynchronous循环返回

在使用asynchronous库进行stream量控制时,特别是async.forEach,如果您需要跳过特定项目,如何正确执行callback。 例: async.forEach(bigCollection, function(item, callback) { if(skipThis) { return callback(); // OR BELLOW IS BETTER?? //return process.nextTick(callback); } db.query(query, callback); }, callback); 如果我不使用process.nextTick(callback) ,如果bigCollection太大,我会冒险运行到堆栈溢出吗? 而且,如果我使用process.nextTick(callback) ,我无论如何破坏我的代码? 我有习惯做process.nextTick(callback)方式,但是我不太确定这是一个好的做法。

node.js – 将asynchronous函数变成同步函数

像许多其他人一样,我想把第三方模块(Patio)的asynchronousfunction变成同步function。 function get_user_message_list(parameters, array, response) { var new_array = []; for (var i in array) { var json = array[i]; json['content']['users_seen'] = ["1757842565"]; json['content']['users_not_seen'] = []; new_array.push(json); } console.log("NEW ARRAY :"); console.log(new_array); response.writeHeader(200, {'Content-Type':'application/json'}); response.end(JSON.stringify(new_array)); } function get_json_message(parameters, json) { console.log("JSON OBJECT :"); console.log(json); var dataset = db.from(TABLES.USER).join(TABLES.MOVIE_LIST, {MLUserId: sql.URId}).join(TABLES.MOVIE, {MVId: sql.MLMovieId}); dataset.where('MLSeen={seen} AND MVSourceId={movie} […]

callbackAsync.Map不工作

我对callback比较陌生,并且在获取下面的代码的过程中不成功。 我已经使用async.map函数将每个Web调用的数据返回到相应的页面。 不过,即使callback(data)之前的console.log(data) callback(data)正在返回网页的html,我的console.log(return)也会返回[ , undefined] 。 这是我的代码: var http = require("http"), fs = require("fs"), page, chap, ot, async = require("async"); ot = fs.open('ot.txt', 'w'); page = "test"; chap = 2; function getData(url, callback) { var data = ""; var options = { host: "rs.au.com", port: 80 } options.path = url; console.log("request sent to: http://" […]

Nodejs将昂贵的同步任务转换为asynchronous系列

在nodejs中,我有一个昂贵的函数,如: function expensiveCode(){ a.doExensiveOperation(1); b.doAnotherExensiveOperation(2); c.doADiffererentExensiveOperation(3); d.doExensiveOperation(4); } 这样每个子函数调用都有不同的参数,因此不能在循环中完成。 我想节制这个昂贵的函数调用,以便每个子调用nextTick完成,如: function expensiveCode(){ process.nextTick(function(){ a.doExensiveOperation(1); process.nextTick(function(){ b.doAnotherExensiveOperation(2); process.nextTick(function(){ c.doADiffererentExensiveOperation(3); process.nextTick(function(){ d.doExensiveOperation(4); }); }); }); }); } 这显然是丑陋的,如果有20行不同的操作太可怕,甚至不能考虑。 我已经回顾了一些类似“async.js”的库,但是他们似乎都希望被调用的函数是asynchronous的 – 在完成时有一个callback函数。 我需要一个简单的方法来做到这一点,而无需将所有的代码转换为“完成时的callback”方法,这似乎是矫枉过正。

node.js:asynchronouscallback值

我很困惑。 我很想学习如何传递我在asynchronous函数中获得的值。 我有一个基本的身份validationfunction的模块。 在login时,我要求用户模型search具有给定用户名的用户。 login: function(req){ var username = req.body.username, password = req.body.password; user.find(username); } 然后,用户模型继续,并做到这一点。 exports.find = function(username){ console.log(User.find({username: username}, function(error, users){ // I get nice results here. But how can I pass them back. })); } 但是,我怎么能通过该用户对象回loginfunction?

NodeJS – 不能实现asynchronousfunction

我在NodeJs新手。 这是我学习asynchronous函数的代码。 //——————— MAIN ————— console.log("Endpoint 1\r\n"); testThread(1000000000,function (result){ console.log(">>>>"+result+"\r\n"); }); console.log("Endpoint 2\r\n"); //—————————————— function testThread(data,callback) { //take a long time for(j=0;j<data;j++) { a = 122342342342424242431*3543652636364; } // callback(a); } 运行: node testthread.js 总是结果是: Endpoint 1 >>>>4.335387639806787e+32 Endpoint 2 系统打印“端点1”,花费2秒,打印“>>>> 4.335387639806787e + 32”后打印“端点2” 我在这里找不到asynchronous。 它应该是: Endpoint 1 Endpoint 2 >>>>4.335387639806787e+32 请解释我

将function传递给下一个function,根据条件进行激活。 的NodeJS

我使用express.js来创build一个node.js REST服务器,作为一个部分,我也创build了一个简单的会话系统。 我有3个模块: app.js highscoreMan.js userSession.js http://localhost/api/highscores的app.jsurl现在使用给定的参数调用userSession: //Get all highscores app.get('/api/highscores', function (req, res) { userSession.checkValidity(req.query['username'], req.query['sessionid'], highscoreMan.getAll(req, res)); }); 但是,在checkValidity中,我通过的函数被自动调用: function checkValidity(username, sessionId, callback) { userSession.findOne({ userid: username, sessionid: sessionId }, function (err, result) { if (err) { console.log(err); } if(result) { callback; } }); } 我只想运行正在传递的函数,因为我从数据库中获得了正确的结果(其他检查将稍后添加会话date等)。 我将如何做到这一点?

asynchronous非阻塞事件驱动方法是“asynchronous编程”的唯一方法吗?

我对这里的术语有些困惑。 让一个程序由一些概念上不同的任务组成: 在asynchronous编程模型中,任务是相互交错的,但在一个单一的控制线程中。 即使在多处理器系统上,单线程asynchronous系统也会始终以交错执行。 没有实际的并行性。 事件驱动方法是做“asynchronous编程”的唯一方法吗?

nodejs async.waterfall方法

更新2 完整的代码清单 var request = require('request'); var cache = require('memory-cache'); var async = require('async'); var server = '172.16.221.190' var user = 'admin' var password ='Passw0rd' var dn ='\\VE\\Policy\\Objects' var jsonpayload = {"Username": user, "Password": password} async.waterfall([ //Get the API Key function(callback){ request.post({uri: 'http://' + server +'/sdk/authorize/', json: jsonpayload, headers: {'content_type': 'application/json'} }, function (e, r, […]

NodeJS +asynchronous:哪个控制stream选项select?

正如你所知,async.parallel是用这样的代码定义的: async.parallel([ function (callback) { callback(err, objects); }, function (callback) { callback(err, status); }, function (callback) { callback(err, status); }, ], function (err, results) { //smth with results[N] array… }); 并行执行所有的任务。 但是,我需要在第二和第三个函数中使用第一个函数(准确地说是objects )的callback结果。 换句话说,第一步 – 第一个function,第二个 – (第二个+第三个与第一个结果平行)。 async.waterfall似乎是一个坏主意的原因: 在瀑布function不能并行工作 我无法访问堆栈的每个结果,只能到最后。 有任何想法吗? 谢谢!