Tag: asynchronous

asynchronous调用Node.JS上的mySql

所以,我试图在我的node.js项目asynchronousgetConnection和查询,因为我想只在我的查询后,我的回应。 这是代码, router.post('/', function(req, res, next){ var queryRows; con.getConnection(function(error, connection){ if(error){ }else{ connection.query('SELECT * FROM Tablee', function(error, rows, fields){ queryRows = rows; }); } }); res.render('home', {data:queryRows}); } 我想首先运行getConenction()和代码; 然后渲染。 我遵循了这个问题的确切解决scheme,但徒劳无功。 连接本身是不确定的; 所以查询返回错误。 我正在使用节点版本8来支持asynchronous和等待; 但是我无法得到结果。

Nodejs – 这个代码中的执行顺序是什么? asynchronous在内部等待循环

假设我们有一个模型“用户”,一个模型“游戏”。 一个用户可以有很多游戏,但是一个游戏只属于一个用户。 在“用户”模式中,我们有场“gamesCount” – 用户拥有的游戏总数 在“游戏”模式中,我们有与用户相关的字段userId 现在我们需要遍历所有的用户,并且对于每个用户,我们查询“游戏”集合以获得用户有多less游戏,然后将值“gamesCount”保存到用户模型。 我有2个代码片段: updateUserGamesCount: async function (req, res) { try { let users = await User.find({}); for (let user of users) { user.gamesCount= await Game.count({userId: user._id}); await user.save(); } return res.status(200).send("Success"); } catch (err) { res.status(500).send(err); } } 这第一个片段不起作用。 它只是加载一段时间,然后请求超时。 当我尝试修改gamesCount值来查看它是否已更新时,则在第一个片段运行后,值不会更新。 updateUserGamesCount: async function (req, res) { try { let […]

我怎样才能执行一个接一个的查询并处理这些数据?

我有一个app.get,将返回客户数据和客户购买。 在这个app.get内部,我需要运行两个mysql调用,并build立一个数组传回来。 我怎样才能执行一个接一个的查询并处理这些数据? app.get('/customer', function (req,res) { var response1 = []; var response2 = []; var processedData = []; connection.query('QUERY HERE', function(err, rows, fields) { if (!err){ response.push({rows}); } else { res.status(400).send(err); } }); //for loop 'response' results and perform another query for (var i = 0; i < response1.length; i++) { var row = […]

NodeJS / gm:承诺asynchronous调用

我使用gm来操作nodeJS应用程序中的一些图像。 这是我的function如何。 正如你所看到的,有一些操作开关(在这个例子中:旋转)。 gmStream被创build,在切换之后.stream()和pipe()将被使用。 到目前为止,一切都很好。 但是,对于切换resize的情况下,我需要知道图像的尺寸,我通过size() 。 但是这是一个asynchronous调用。 这个gmStream不用于交换机下面显示的stream() 。 但是在这个stream()会做更多的数据库的东西,所以我需要使用相同的东西… function manipulate (method, param) { return new Promise(function (resolve, reject) { // Configure GridFS (gridfs-stream) const gfs = Grid( MongoInternals.defaultRemoteCollectionDriver().mongo.db, MongoInternals.NpmModule ) switch (method) { case 'rotate': gmStream = gm(readStream) .rotate('#ffffff', param.rotate) break // … some more cases … case 'resize': gmStream = gm(readStream) […]

如何用async / await等待child_process.spawn的执行?

我有一个这样的函数,它接受一个命令,参数和一个进程: execPromise (command, args) { return new Promise((resolve, reject) => { const child = spawn(command, args) child.stdout.on('data', (data) => { this.logger.info(`stdout: ${data}`) }) child.stderr.on('data', (data) => { this.logger.info(`stderr: ${data}`) }) child.on('close', (code) => { if (code !== 0) this.logger.error(`Command execution failed with code: ${code}`) else this.logger.info(`Command execution completed with code: ${code}`) resolve() }) }) } […]

Node.js async.parallel,它是平行的吗?

我知道节点依赖于单个事件线程。 所以没有办法让它有并行的线程。 但是async.parallel确实提供了类似并行的function。 Stack上的另一个问题意味着async.parallel正在使用process.nextTick。 所以基本上async.parallel是只是一个并发function,而不是一个真正的并行function?

在javascript中运行一个接一个的函数

我正在使用JavaScript来使用Facebook发送API。 function sendmessage(callback) { for (i = 0; i < recipientId.length; i++) { var messageData = { recipient: { id: recipientId[i] }, message: { text: messageText } }; callSendAPI(messageData, pagetoken, id_notsent); } return callback( ); } function sendstatus() { if (id_notsent.length == 0) { res.statusCode = 200; res.message = "Successfully sent generic message to all […]

是否有一个节点模块的常见模式,需要asynchronous加载大文件才有用?

我不喜欢我见过的任何东西… 模 import lineReader from 'line-reader' let bigFile = './huge-file.csv' export default class DooDad { constructor() { this.dictionary = new Map() // Something like this seems like it'd be nice… // await this.load() } load() { return new Promise((resolve, reject) => { lineReader.eachLine(bigFile, (line, last) => { // this.dictionary = The contents of huge-file.csv }) […]

使用promise和rediscallback

我试图用我在Redis服务器上的东西填充我的var todos ,我得到我必须使用承诺,但我可能不在正确的位置。 首先,我用.smembers()函数获取所有ids,并且为每个id获取具有正确id的对象并将其parsing为todos 。 var todos=[]; res.locals.redis.smembers("todo:20", function(err, reply){ // ie SMEMBERS todo:20 returns 0 and 1 var promises=reply.map(function(elem){ res.locals.redis.get("todo:20:"+elem, function(err, reply1){ // ie GET todo:20:0 return new Promise(function(resolve, reject){ todos.push(JSON.parse(reply1)); resolve(); }); }); }); Promise.all(promises) .then(function(){ res.locals.redis.quit(); res.render('todolist.ejs', {todo: todos}); }) .catch(function(reason){ console.log(reason); }); });

需要帮助相关的asynchronous函数执行stream程(await,promises,node.js)

如果你帮我解决以下情况,我将不胜感激。 给定function: async function getAllProductsData() { try { allProductsInfo = await getDataFromUri(cpCampaignsLink); allProductsInfo = await getCpCampaignsIdsAndNamesData(allProductsInfo); await Promise.all(allProductsInfo.map(async (item) => { item.images = await getProductsOfCampaign(item.id); })); allProductsInfo = JSON.stringify(allProductsInfo); console.log(allProductsInfo); return allProductsInfo; } catch(err) { handleErr(err); } } 这个函数在服务器启动时被触发,它收集来自其他站点的活动信息:获取数据(getDataFromUri()),然后从数据名称和id(getCpCampaignsIdsAndNamesData())中提取,然后获取每个活动的产品图像(getProductsOfCampaign()) ; 我也express.app与下面的一段代码: app.get('/products', async (req, res) => { if (allProductsInfo.length === undefined) { console.log('Pending…'); allProductsInfo = […]