Tag: asynchronous

如何等待asynchronous完成 – NodeJs

我正在使用asynchronous来执行第二个数据库查询。 该查询的结果必须作为对象添加到第一个查询中。 问题是当asynchronous完成时,数据没有改变,因为他已经发送了未改变的数据。 有没有办法等待asynchronous完成? 我使用了一个超时,但数据的大小是未知的,所以这不是一个好的解决scheme。 到目前为止的代码: connection.query('SELECT * FROM SENSORS', function(err,rows) { if(rows.length !== 0) { DEBUG_WRITE('sensor/','GET',200); async.eachSeries(rows, function(row, callback) { connection.query('SELECT * FROM LOCATIONS WHERE LocationID=?',row.LocationID, function (error, result) { row.location = result; callback(null,rows); }); }); res.status(200); res.send(rows); } else { DEBUG_WRITE('sensor','GET',404); res.status(404); res.send({status: "No entries found"}); } });

forEach Loop中的asynchronousfindOne()操作

我很难理解JavaScript的承诺。 我正在寻找符合一定条件的对象的Mongoose模型,如果它们存在,我想将对象变成一个普通的JS对象,并添加一个属性。 不幸的是,我无法将自己的头围绕在如何确保我的forEach循环将在我的诺言最终解决之前完全运行。 请看我的代码。 // Called to check whether a user has participated in a given list of challenges participationSchema.statics.getParticipation = function(user, challenges) { return new Promise((resolve, reject) => { challengesArray = []; challenges.forEach((challenge) => { // Model#findOne() is Async–how to ensure all these complete before promise is resolved? Participation.findOne({user, challenge}) .then((res) => { if […]

Node.JS – 在执行其余代码之前等待函数完成

我不是一个专业的Node.JS和Javascript作为一个整体,所以请原谅我,如果这是一个愚蠢的问题。 我正在运行一个Node.JS服务器来接受我将要运行的网站的套接字连接,而这个脚本的目的之一就是联系一个数据库。 我有一个function是专门在启动服务器之前做到这一点。 但是,当我调用函数时,它继续执行代码的其余部分,不等待函数完成。 我曾尝试使用callback但无济于事,我不知道如何使用Promise。 有人可以解释我如何解决这个问题? 这里是我的代码供参考: function GetCompetitionInfo(competitionID,callback){ var competitionInfo = { id:competitionID, title:"", topic:"", difficulty:"", description:"", jackpot:0, answer:0, author:0 } var testVariable; sqlConnection_read.connect(function(err){ if(err) throw err; console.log("Connected to TSDB, retrieving competition info…"); var query = "SELECT * FROM competitions WHERE PuzzleID="+competitionID+";"; sqlConnection_read.query(query,function(err,result){ if(err) {console.log("Uh oh spaghettiohs");throw err;} competitionInfo.title = result[0].Puzzle_Title; competitionInfo.topic = result[0].Puzzle_Topic; […]

ForEach循环内asynchronous/等待节点Postgres查询

编辑:我使用节点v8.0.0 我刚刚开始学习如何使用node-postgres访问SQL数据库,并且在访问多个数据库以便以可工作的格式收集数据时遇到了一些问题,特别是在forEach循环中执行多个查询时。 经过几次尝试,我试着asynchronous/等待,但我得到以下错误: await client.connect() ^^^^^^ SyntaxError: Unexpected identifier 当我尝试使用一个池或顺序调用.query,我会得到的东西沿线 1 [] could not connect to postgres Error: Connection terminated 这里是我的代码的缩写版本: const { Client } = require('pg'); const moment = require('moment'); const _ = require('lodash'); const turf = require('@turf/turf'); const connString = // connection string var collected = [] const CID = 300 const snaptimes […]

node.js / libuv如何使用reactor模式支持asynchronousio

libuv用于处理IO的反应器模式是通过devise同步的,但是libuv支持asynchronousIO。 这怎么可能? libuv是否扩展了反应堆的devise以支持asynchronousio? 使用multithreading/事件循环是否有助于实现这一点?

逐行读取完成后执行Node.js

这可能会发生在其他asynchronous函数,但我使用readline作为例子,因为这是我遇到的问题。 我刚刚开始使用JS,目前正试图通过stdin( < )从文件中收集input。 下面的代码就是一个例子: const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, terminal: false }); rl.on('line', foo); function foo(line) { // Code to be iterated by line } function summary() { // Code to be executed after rl finishes } 所以问题是,我在哪里把summaryfunction? rl.on是否在完成后执行另一个执行的callback? 澄清:每当rl读取一行并调用summary时, foo被调用一次,这是在rl完成之后

从Node.js多次调用Web服务

我正在构build一个原型Web应用程序,它响应具有查询参数的GET请求,并且调用3个不同的Web服务,所有Web服务都有不同的有效负载 – 2是ReST(一个返回二进制对象,一个图像,一个返回JSON),1是SOAP。 然后,我需要将这些数据中的每一个汇编到为原始GET请求返回的HTML页面中。 我是新来的asynchronous编程,我认为这是我出错的地方。 对于我使用的SOAP var locationRequest = require('request'); locationRequest(options1, function (error, response, output) { … } 对于ReST调用,我使用了两个类似的调用: var resourceJSON; var body2; var resourceHttp = require("https"); var resourceRequest = resourceHttp.request(resourceOptions, function (resourceRes) { var chunks2 = []; resourceRes.on("data", function (chunk2) { body2 += chunk2; }); resourceRes.on("end", function () { resourceJSON = JSON.parse(body2); }); resourceRes.on('error', […]

Javascriptasynchronous并行 – 如何返回最终结果/callback?

如何将最终结果/callback返回给调用函数? 文档中的所有示例仅显示console.log()选项。 以下代码仅用于示例目的。 function foo(input) { async.parallel([ function(callback) { callback(null, input.one); }, function(callback) { callback(null, input.two); } ], function(err, results) { // What to do here? all examples include console.log() // I want to return the result ([1, 2]) to the calling function! }); } var data = {"one": 1, "two": 2}; var bar = […]

基于承诺的编程,可能与否?

我已经学习了很多关于你的导游,朋友的承诺 但在学习承诺之后,我的脑海里就产生了一个问题: 是真的(可能)build立整个node.js项目只有承诺? 如果不是的话: callback在哪里比诺言更有用?

mongodb查询内部节点js eachOf循环

我想添加嵌套的DB查询内应该是一个eachOf循环同步。 尝试了这么多的组合,哪些没有为foreach循环内部工作。 async.eachOf(nc.virtual_devices, function (vd) { ///////// This code work fine ///////////// var domain = extractDomain(vd.api_url); vd.raw_api_ip = vd.api_ip; vd.api_ip = getProxiedPath(vd.api_ip); vd.raw_api_url = vd.api_url; vd.api_url = nconf.get('PROXIED_PATH_SCHEME') + vd.api_ip + vd.api_url.split(domain)[1]; // Path to websocket notifications vd.ws_url = nconf.get('PROXIED_PATH_SCHEME') + vd.api_ip + vd.notification_base_uri; //// THIS CODE IS NOT FINE ////////////// if (nc.type === 'XXX'){ […]