Tag: asynchronous

Node.js等到asynchronous函数完成,然后继续执行其余的代码

在我的代码中,我有2个for循环执行一个asynchronous函数(在两个循环中它是相同的函数),但是在这两个循环之后的代码必须等到执行它们之后才运行。 这是我的代码: for(var a = 0; a < videoIds.length; a++){ if(videoIds){ findVideo(videoIds[a], function(thumbnailPath, videoName){ // findVideo is the async function // it returns 2 values, thumbnailPath and videoName videoNames[a] = videoName; // and then these 2 values are written in the arrays thumbnaildPaths[a] = thumbnailPath; console.log('1'); }); } } // then the above code runs […]

节点asynchronous调用返回数据作为响应

我是nodejs的新手,所以我有一个基本的问题,这是我的scanrio 我有一个JavaScript客户端正在向节点服务器发出一个http请求,以从数据库读取值。 一旦节点服务器接收到请求,它会进行一个简单的数据库调用,并在响应中将数据返回给客户端,这就是问题所在。 router.get('/state', function(req, res){ var result = dbServer.makeDBCall();//Before this line executes and returns the result the next line executes res.send(result); } 来自节点服务器的数据库调用是asynchronous的,因此在返回结果之前,节点服务器已经向客户端发送了一个空的响应。 什么是达到这个标准/可接受的方式,我知道我可以使用asynchronous阻塞节点线程,但是那么节点的全部目的是正确的?

如何使用默认捕获和处理程序创buildPromise

我正在创build一个使用koa和babelasynchronous/等待的API 我的控制器函数中的每一个承诺看起来像这样 async function … { await Promise … .then(data => response function) .catch(err => err function) } 每个承诺都有完全相同的响应和错误function。 有没有办法让我自动地使用相同的then / catch解决每个承诺(就像promise的默认parsing函数一样)。 然后我的代码看起来像这样: async function … { await Promise … } 承诺会自动解决/捕获。

将附加parameter passing给Node js中fs.readFile的callback函数

是否有可能将其他parameter passing给fs.readFile的callback函数。 我有我的代码来读取一个目录,并parsing所有的XML文件。 我需要传递文件名的callback链进行额外的处理。 截至目前我的代码是 var fs = require('fs'); var path = require('path'); module.exports.extractXMLBody = function (dirPath, ext) { fs.stat(dirPath, function (err, stats) { if (stats.isDirectory()) { fetchFiles(dirPath, ext, function (listOfFiles) { _.each(listOfFiles, function (val, key) { var completePath = dirPath + '/' + val; var fileName = path.basename(val, path.extname(val)) // TODO : Figure out […]

如何从头开始在Javascript中编写asynchronousMap函数?

我需要从头开始写这个asyncMap函数的帮助。 我想我已经差不多了,但我不确定为什么我一直得到错误的答案。 这是我迄今为止的代码: function wait3For1(callback){ setTimeout(function(){ callback('one') }, 300) } function wait2For5(callback){ setTimeout(function(){ callback('five') }, 200) } function asyncMap(tasks, callback){ return callback( tasks.map((item) => item((element) => element))) } asyncMap([wait3For1, wait2For5], function(arr){ console.log(arr) //expect ['one', 'five'] }); 我一直越来越[undefined, undefined]我敢肯定,这是因为我没有正确执行callbackwait2For5和wait3For1,但不知道是什么问题。 提前致谢!

用fs读取文件后parsingJson

我试图build立两个node.js脚本之间的通信。 第一个获取请求并将响应写入文件。 第二个观察文件,然后他读取它,并提示结果。 第一个(然后写) var request = require('request'); var parseString = require('xml2js').parseString; var fs = require('fs'); //Some needed variables streamInterval = setInterval(function() { request.get(addr, function (error, response, body) { if (!error && response.statusCode == 200) { parseString(body,{ explicitArray : false, ignoreAttrs : true }, function (err, result) { var jsonResult = JSON.stringify(result); var result = […]

MongoDb forEachasynchronouscallback

我正在使用Request npm模块从api提取数据并将其插入到Mongo数据库中的字段中。 阿富汗是数据库中的第一个国家,是唯一充满数据的文件。 其他国家都会被跳过。 下面的代码控制台顺序logging“开始”和“结束”,然后logging国家名称。 我得到这是JavaScript的asynchronous性质的结果,但我不知道它是如何影响此代码。 不应该在控制台日志: begin country end etc… 这里代码: MongoClient.connect(url, function(err, db) { db.collection('countries').find().forEach( function(myDoc) { console.log('beginning'); var code = myDoc.country.iso2; var options = { url: 'https://api.tugroup.com/v1/travelsafe/countries/' + code, headers: { ['X-Auth-API-Key']: '*******', ['Content-Type']: 'application/x-www-form-urlencoded' } } var callback = function(error, response, body) { console.log(myDoc.country.name); if (!error && response.statusCode == 200) { […]

JS(node.js) – 如果我进行asynchronous调用,但不等待它完成将保证完成执行?

标题是一个长期的问题,但如果我在JavaScript中进行asynchronous调用,但没有回电或在承诺链它会完成执行? 即如果我有像这样的代码: function markAsInactive(userId) { return retrieveUser(userId) // .then(res => { const mark = markAsInactive(userId) // returns a promise (say takes 2 seconds) return Promise.resolve('blah') }) .then(…etc) .catch(…) } 对markAsInactive的调用被触发,但是线程不会等待它parsing,而是立即转向下一个(就我的理解而言)。 如果堆栈返回到根目录,将保证完成执行,否则线程/进程将取消调用? 我知道我可以使用类似return Promise.all([mark, …])来并行地parsing多个promise。 这个问题更多的是为了我的熏陶。

使用asynchronousdb编程来sorting动作

新的asynchronous和挣扎。 在下面的例子中,我希望初始化一个表,然后通过以下方式处理它的内容:a)删除旧数据b)插入新loggingc)将表读入数组d)显示数组 'use strict'; // ================================================================================ // Module dependencies var pgp = require('pg-promise')(); // ================================================================================ //Configure the database connection var config = { user: 'user', //env var: PGUSER database: 'database', //env var: PGDATABASE password: 'password', //env var: PGPASSWORD }; var db = pgp(config); // ================================================================================ // Initialise rhe variables var customers = []; // ================================================================================ […]

Nodejs:Waterline + Caolan / Async:绑定函数

使用Balderdashy /水线和Caolan /asynchronous ,我试图平行severa水线查询。 到目前为止,我发现的更短的是: const tasks = { foos: (function(){return this.exec.bind(this);}).apply(Foo.find({foo: "foo"})), bars: (function(){return this.exec.bind(this);}).apply(Bar.find({bar: "bar"})) }; return async.parallel(tasks, function(err, out){ // Here, err contains the potential error, and out looks like {foos:[…],bars:[…]} }); 我试图做bars: Bar.find({bar: "bar"}).exec但async似乎apply该函数与另一个对象作为范围…所以我不能find一种方法来做到这一点更简单的方法。 请注意,我想避免将函数封装在另一个函数中,因为它是我想要查找替代方法的语法: bars: function(cb){Bar.find({bar: "bar"}).exec(cb)} 感谢您的帮助。