Articles of asynchronous

如何导出asynchronous函数?

以下是我的代码 – abc.js class abc { async foo1() { // do something return result; } async foo2() { // do something return result; } module.exports = abc } 另外,file.js const abc = requir(./abc); abc.foo1(); // this results in error // TypeError : abc.foo1 is not a function 我应该怎么做?

读取和写入process.env值是同步的吗?

在nodejs中读取和写入环境variables是使用process.env对象完成的。 例如: process.env.foo评估为env var foo process.env.bar = 'blah'将env var bar的值设置为等值 delete process.env.baz删除环境variablesbaz 从试错看,缺乏callback,我认为这些行动是同步的,但我没有在文档中find它的参考。 在nodejs中env var access是同步的还是asynchronous的? 附录:为什么我认为这个问题是不平凡的 遵循以下注释:读取和写入环境variables可能意味着进程需要与操作系统进行通信,或执行某种阻塞I / O操作。 因此,询问环境variables是否作为本地对象存储在内存中而没有任何同步,或者以阻塞的方式发送到操作系统是有意义的。 此外,操作系统的实现可能会有所不同,官方文档对于非阻塞操作没有任何承诺。

准备好的语句不能在节点js中用mssql执行

在运行代码之后,我得到的只是控制台日志“完成”,没有更新数据库。 我究竟做错了什么? var pool = new sql.ConnectionPool(config); var ps = new sql.PreparedStatement(pool); ps.input('code', sql.VarChar); ps.input('hex', sql.VarChar); ps.prepare("UPDATE tHE_SetItem SET acPicture = CONVERT(varbinary(max), @hex, 2) WHERE acIdent = @code;", function(err) { async.mapSeries(hexes, function(pair, next) { ps.execute({code: pair.code, hex: pair.hex}, next); }, function(err) { ps.unprepare(function(err) { console.log("Done!"); }); }); });

Node JS MY SQL使用promisepipe理事务

我想在一个事务中将对象保存到数据库中。 对象有两个子对象和一个数组列表对象,数组列表中的每个对象都有自己的数组列表: { "person": { "id": null, "personal_no": "555555555555555555" }, "reservation": { "id": null, "personal_no": null, "status_id": null, "reservationDetail": [ { "id": null, "status_id": null, "room_id": 44, "start_date": "2017-08-09T18:04:26.938Z", "end_date": "2017-08-09T18:04:26.938Z", "category_id": 64, "reservationPerson": [ { "reservation_id": "123", "person_id": "5555555555555555551" }, { "reservation_id": "123", "person_id": "5555555555555555552" } ], "reservationService": [ { "reservation_id": "123", "person_id": "5555555555555555553" […]

Node.js和MongoDB顺序写入导致竞争状态?

(实际问题:这是顺序写入mongodb,不会导致竞争条件,并且是非阻塞的正确方法?) 我正在尝试在mongodb中完成文档的顺序写入/更新。 操作的顺序是有一定的关键的。 在下一个操作发送到数据库之前必须完成一个操作。 我现在所做的方式是使用Bluebirds Promise.mapSeries()循环请求,并对正确的集合执行正确的操作。 数据库函数然后返回一个Promise给循环。 我相信这是正确的事情。 当承诺解决后,下一次迭代将被解雇。 我相信这也应该是非阻塞的。 对于这个问题。 一堆插入和集合包含大约500k文件后,更新开始失败。 我想要更新的状态不会反映在数据库中。 mongo中没有任何迹象表明操作失败,更改不在数据库中。 数据库是正确的索引,所以不应该在我看来是一个问题。 I / O负载相当高。 目前在开发testing中,每秒大约有250个操作。 在生产这个数字可能是200倍左右。 这里是我现在这样做的片段: Promise.mapSeries(testResults, (result) => { if (result.test) { // Save sequence results and status if (result.test.testSequence) { const coll = db.collection(collection); // query = result.test.id; // newValues = result.test; const options = { upsert: true, […]

node.js lambda函数将logging从sql迁移到elasticsearch,使用队列限制asynchronous调用

我试图在node.js中实现下一个function:我必须从sql到1.200.000logging迁移到elasticsearch,我分成5万批次,一旦我解决了5分钟超时问题,我痛苦了这一点内存问题的aws lambda。 我发现这个async.queue限制在Node.js中的asynchronous调用,但我一定是做错了,因为它不能按预期工作。 我究竟做错了什么? 我怎样才能限制asynchronous调用importSQLData方法? 谢谢。 这是我的代码: exports.importData = function(batchNum,topNum,startNum){ var q = async.queue(function (task, callback) { console.log('hello ' + task.name); callback(); }, 2); q.drain = function () { console.log('all items have been processed'); } for (var y = 1; y <= batchNum; y++) { q.push(importSQLData(topNum, startNum), callback); // I don't know if this is […]

NodeJS / Javascript – 使用承诺来处理图像收集,然后保存汇总的结果

股票溢价 – 我试图用NodeJS处理图像集合(〜2000图像)。 我能够提取所需的信息,但我很难得到正确的时间,以便将结果保存到JSON文件。 接近尾声,你会看到 console.log(palette); // Push single image data to output array. output.push(palette); console.log工作正常,但是在将空的output数组写入data.json之后,似乎执行了push方法。 试过有一个嵌套的承诺,我不会写文件,直到所有的图像已被处理。 getPixels中的callback函数是asynchronous执行的。 输出数组的顺序是任意的。 任何和所有帮助非常感谢! 谢谢! // Extract color information from all images in imageDirectory var convert = require('color-convert'), fs = require('fs'), getPixels = require("get-pixels"), startTime = Date.now(); var processedImages = new Promise((resolve, reject) => { var imageDirectory = 'input', […]

如何使用mongoose和asynchronous瀑布模型在MongoDb中存储数据

你好我是新的节点,我想保存数据在mongoose。 问题是有3个collections单位,build筑和部分。 build筑图是: var buildingsSchema=new Schema({ buildingname:String, status:String }); 部分模式是: var sectionsSchema=new Schema({ section_type:String, buildings:{ type: Schema.Types.ObjectId, ref: 'buildings' }, status:String }); 单位的架构是: var unitsSchema=new Schema({ unit_type:String, unit_num:String, unit_ac_num:Number, buildings:{ type: Schema.Types.ObjectId, ref: 'buildings' }, sections:{ type: Schema.Types.ObjectId, ref: 'sections' }, shares:Number }); 在部分有一个build筑物的身份证和在单位有build筑物和部分的身份证 现在我已经使用xlsx插件将上传的Excel文件转换为json: var wb = XLSX.readFile("uploads/xls/" + req.file.filename); data = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], {header:1}); […]

来自页面评估的返回值(puppeteer,asnyc编程)

我有以下问题:我有一个木偶的页面评估,其中包括asynchronous部分。 我想把asynchronous部分的值返回给puppeteer,但是它只是返回undefined而不等待Promiseparsing。 有人如何解决这个问题? 我的示例代码: const puppeteer = require('puppeteer'); async function testing(num) { const browser = await puppeteer.launch({ headless: false, ignoreHTTPSErrors: true }); const page = await browser.newPage(); const evaluating = await page.evaluate((num) => { //some synchrnous stuff (declaring some variablesand so on…) function lookForNumber(num) { if (num > 2) { var asyncstuff = setTimeout(function () […]

在js中的asynchronous操作顺序

最初我对代码中的数字顺序有疑问 (function() { setTimeout(() => console.log(1), 0); Promise.resolve(true).then(() => console.log(2)); })(); 对于我自己,我已经解释过,像setTimeout事实上使用4ms而不是0。 但是代码和setImmediate (function() { setImmediate(() => console.log(1), 0); Promise.resolve(true).then(() => console.log(2)); })(); 问这个问题的人说,原因是在v8 Promise中不是webapis的一部分,并且在循环内运行。 也许还有其他解释吗? 还是链接来find更多的细节? 如果我使用放大镜进行可视化,我看到了相同的情况 放大镜可视化 – 我正在寻找解释