Tag: 同步

如何以同步的方式调用Q函数

我有一个function: const Q = require('q'); const timers = require('timers'); function _testQ() { const deferred = Q.defer(); console.log('test timer event 1s.'); let t = timers.setInterval(() => { console.log('Timer event!'); timers.clearInterval(t); deferred.resolve(true); }, 1000); return deferred.promise; } let out = _testQ().then((n) => { console.log('Debug1 n:', n); }); console.log('Debug2 ', out); 如何以syncronios的方式调用它。 我得到这样的输出: test timer event 1s. Debug2 […]

Node.js和node-mysql数据库查询 – 需要同步代码的帮助

我正在写一些非Web应用程序助手,并遇到了一个同步查询调用的需要。 基本上,在一个循环内,我需要检查数据库,看看值是否存在。 如果没有,则插入值。 目前,在node-mysql中,我只能使用callback来工作。 因此,node.js将该调用视为asynchronous,并在查询完成之前继续处理我的请求。 这是一个很大的问题,因为最后它可能会插入重复项,因为它们在队列中。 理想的解决scheme – 不起作用。 结果实际上是客户端的对象,我无法find其中的实际结果。 但是,这确实使其同步。 results = client.query('SELECT COUNT(md5) as md5Count FROM table WHERE md5 = "' + md5 + '"') 以下不起作用。 Node.js将其视为asynchronous,而outerResult仍然是客户端的对象。 outerResult = client.query('SELECT COUNT(md5) as md5Count FROM board WHERE md5 = "' + md5 + '"', function selectCb(err, results, fields) {console.log(results);}); 任何帮助表示赞赏。

Node.js中分阶段执行recursion循环

我是一般的Node.js和asynchronous编程的新手,我有一个问题。 我需要在recursion循环中连续工作的服务器,这些步骤将被一致地执行,并且每个阶段应该包括通过websotskets(这已经被理解)的asynchronous接收数据,或者在计时器到期时进入下一阶段。 我意识到,这不是一个小任务,而是如何实现它,图书馆可以提供什么帮助? 我试图理解Step.js和Node.js事件,这是我需要什么? 如果我写了所有这一切同步: //CODE FOR STACKOVERFLOW var previous_round = 'qwerty';// this is string, selected in previous cycle var round_users = users;// 'users' is array of soceket.id all connected users and here a put them into new array 'round_users' with sockets for current cycle io.sockets.emit('users_round', { number: round_users.length }); // send to users information […]

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} […]

Nodejs串联运行函数

所以现在我试图使用Nodejs来访问文件,以便将它们写入服务器并处理它们。 我已经把它分成以下几个步骤: 遍历目录以生成所有文件path的数组 将来自每个文件path的原始文本数据放在另一个数组中 处理原始数据 前两个步骤工作正常,使用这些function: var walk = function(dir, done) { var results = []; fs.readdir(dir, function(err, list) { if (err) return done(err); var pending = list.length; if (!pending) return done(null, results); list.forEach(function(file) { file = path.resolve(dir, file); fs.stat(file, function(err, stat) { if (stat && stat.isDirectory()) { walk(file, function(err, res) { results = results.concat(res); […]

node.js如何决定一个语句是否被视为asynchronous?

我一直在试图理解什么node.js要添加到事件循环asynchronous处理,以及像正常的同步程序那样得到执行。 例如,为什么这个程序同步执行? console.log(longExecution()) console.log('hello'); function longExecution(){ var results = ''; for (var i=0; i < 10000000; i++) { if (i%1000 === 0) results += 'x' } return results; } 这是输出: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx […]

节点/吞吐同步删除任务内的目录

我有这样一个任务: gulp.task('test', function(){ del('./build'); gulp.src('./test/**/*') .pipe(gulp.dest('./build')); }); 实质上,这应该是首先删除生成目录,然后它应该复制一堆文件到一个新的生成目录。 我的问题:这两个命令是asynchronous还是同步? 在将文件复制到相同目录的新版本之前, del运行并完成显然是非常重要的。 如果他们是asynchronous的,那么我如何让他们同步运行? 我唯一的select是将它们分解为单独的任务,并让del任务依赖于“复制任务”? 在单个任务中没有办法使stream同步?

在同一个node.js程序中调用asynchronus和synchronus函数

在下面的nodejs程序中,input.txt中只有一个string“abc”。 var fs = require("fs"); // Asynchronous read fs.readFile('input.txt', function (err, data) { if (err) { return console.error(err); } console.log("Asynchronous read: " + data.toString()); }); // Synchronous read var data = fs.readFileSync('input.txt'); console.log("Synchronous read: " + data.toString()); console.log("Program Ended"); 输出是 Synchronous read: abc Program Ended Asynchronous read: abc 现在问题是,当程序开始执行时,首先看到asynchronous读文件调用,并在后台运行“读input.txt”的过程,然后服务器看到同步读调用,并再次开始读取input.txt 。 但是,由于asynchronous调用已经开始读取,所以当同步函数完成对.txt的读取之后,asynchronous函数的callback就会被传递给事件循环,并且应该先被执行。 所以第一行应该是 Asynchronous read: abc […]

奇怪的行为fs.readdirSync

我使用nodejs 5.5.0和nodejs 1.0.1。 我运行脚本: npm start 在package.json中,它被定义为: "scripts": { "start": "pm2 start bin/www –watch" }, 我有这个简单的脚本,返回一个video列表,它的工作原理: var express = require('express'); var router = express.Router(); router.get('/', function(req, res, next) { const fs = require('fs'); shows = fs.readdirSync(`public/videos`); res.render('index', shows); }); module.exports = router; 但是我观察到一些有趣的东西…如果我进行下面的修改,它不再起作用,并返回一个空列表: //shows = fs.readdirSync(`public/videos`); res.render('index', fs.readdirSync(`public/videos`)); 为了使它更有趣,下面的工作: shows = fs.readdirSync(`public/videos`); res.render('index', fs.readdirSync(`public/videos`)); 在我看来,如果有某种延迟或caching,fs.readdirSync可以正常工作,但是如果在同一行上直接调用,则不会。 […]

在NPM开始下载模块

我想知道在其他代码运行之前是否有简单的方法来下载文件。 我需要首先从我的服务器下载file.js,因为我需要在我的应用程序在不同的地方。 我知道我可以做那样的事情。 let file = fs.createWriteStream(path.join(__dirname, 'file.js')); let request = http.get("http://expample.com/file.js", function(response) { response.pipe(file); }); 但是,如果我假设正确,该文件是asynchronous写入。 所以当我需要这个文件时,我只是空的对象或错误。 那么在npm start上首先同步下载这个文件的最好方法是什么?