Tag: asynchronous

asynchronous活动后数组的顺序

我有以下一段代码,命中一个API上传图像数组,并返回一个数组中的链接; 但是,图片上传的顺序并不令人满意。 if (req.files) { var uploadedImages = []; for (var i = 0; i < req.files.length; i++) { imgur.uploadFile(req.files[i].path) .then(function (json) { uploadedImages.push(json.data.link); if (uploadedImages.length === req.files.length) { console.log(uploadedImages); //Further processing } }) .catch(function (err) { console.log("Imgur API Error!"); console.log(err.message); res.redirect('/participants?err=' + encodeURIComponent('An unknown error occured. Please try again.')); }); } 例如,如果我上传1.jpg,2.jpg和3.jpg,那么保存这些图像的链接的数组不一定是相同的顺序。 确保订单在此asynchronous活动期间不受影响的最佳方法是什么?

在同步一个内部等待asynchronouscallback函数

我用mysql2-node模块使用Express JS来创build一个访问MySQL数据库的函数 indexOfUserInVotingList : indexOfUserInVotingList: function (voteType, articleID, userID) { SQLconnection.connectToServer(); db = SQLconnection.getConnectionInstance(); let userIndex; switch (voteType) { case "upvote": db.query('SELECT upVoters FROM article WHERE article.idArticle = ?', [articleID], function (err, rows) { if (err) { throw err; } else { let upvoterArray = rows[0].upVoters; userIndex = upvoterArray.indexOf(userID); } }); break; case "downvote": db.query('SELECT […]

在nodejs中的dynamodb中进行扫描的recursion函数

所以我需要一个nodejs中的recursion函数来replace这个函数调用: docClient.scan(params, callback) http://docs.aws.amazon.com/amazondynamodb/latest/gettingstartedguide/GettingStarted.NodeJs.04.html

从asynchronous调用的承诺和条件

我正在使用AWS DynamoDB( aws-sdk )的Node.js实现我的服务。 我不清楚如何实现以下承诺的情况: 我得到一个请求来修改具有指定属性的实体 我试图find数据库中的实体(asynchronous调用find ) 如果实体没有find,那么创build一个初始状态(asynchronous调用createInitialStateObject ) 根据特定规则(asynchronous调用applyModifications )修改实体(位于数据库之前或刚创build的第3步) 这是我第一次尝试: function scenario(params) { find(params).then((data) => { let objectExists = checkExistense(data); if (!objectExists) { createInitialStateObject(params).then((data) => { console.log("Object created"); // OK }).catch((err) => { console.error("Object not created"); // exit and return error }); } applyModifications(params).then((data) => { // OK, return data }).catch((err) => […]

何时使用asynchronousnodejs?

我不是说ES7的asynchronous,但一般的asynchronous函数,如callback和promisses。 所以,我研究了关于NodeJS和事件循环。 一切都让我相信NodeJS有一种asynchronous的错觉。 据我所知,这只有当function必须通过外部媒体传递时才有效。 例如,执行一个读取文件(将被OS API使用),或者执行一个将使用外部API的请求。 我发现很less有人谈论这个问题,我想在这里和你讨论一下。 我的问题是:我是否正确的想法? 还有,如果有实际的方法来找出asynchronous工作在哪里,它不支付? 在某些情况下,如果我是正确的,asynchronous只会花费更多的内存。

当mysql查询asynchronous瀑布不按顺序

我想做一个瀑布asynchronous,但我没有得到我想要的预期输出。 基本上我的瀑布按预期工作,如果我使用数组而不是查询,所以我想我在查询的callback上做错了什么,但我不知道是什么。 代码当它与我期望使用数组: function range(start, end) { var foo = []; for (var i = start; i <= end; i++) { foo.push(i); } return foo; } users = range(1,2) obj = [1,2]; async.forEachLimit(users, 1, function(user, userCallback){ async.waterfall( [ function(callback) { // query the data to get the category and specific number of rows results = […]

嵌套mongoose函数完成之前的循环完成

所有,我正在写post函数,其中包括三个嵌套mongoose函数(findOne,findById&创build)的for循环。 但是,看起来function在完成下一个“i”之前还没有完成。 事实certificate,这个代码的console.log永远不会等于5.我已经做了大量的研究,并且明白这个问题是这些mongoose函数是asynchronous的,但是我还没有遇到过这样的问题:有三个嵌套函数,如下所示。 有什么办法可以让循环中的函数完成之前? 谢谢! 为了简单起见,我把i <5,尽pipe这是代码中的一个variables。 此外,让我们假设价格大于卖出是价格。 var quantity = 0; if(price >= sellYesPricesMin){ for (i = 0; i < 5; i ++){ if(price >= sellYesPricesMin && sellYesPricesMin>0){ Order.findOne({"yes_or_no":"NO", "buy_or_sell":"BUY","event.id":req.params.id},function(err, foundOrder){ if(err){ console.log(err); } else { User.findById(foundOrder.author.id, function(err, foundUser){ if(err){ console.log( err); } else { Share.create({}, function (err, newShare) { if (err){ console.log(err); quantity […]

Node.JS应该避免循环,还是有特殊的方法来处理它们?

循环阻塞。 他们似乎无视Node.JS的想法。 如何处理for循环或while循环似乎是最好的select。 例如,如果我想打印一个随机数number * 1000的表格,我想使用for循环。 有没有一种特殊的方式来处理Node.JS这个?

Node.js循环asynchronous调用

我正忙于为报告系统的terminal工作。 节点async是给我的问题,虽然我宁愿不强迫它是同步的。 我们正在使用MongoDB和Mongoose。 我必须查询集合A的正则expression式,然后对于每个返回的文档,查询多个包含的文档来填充要返回的JSON对象/数组。 我可以使用populate大部分数据,除了最后的循环查询,这是asynchronous开始,并提前返回我的报告。 有没有一个优雅的方式来做到这一点? 或者,我应该分裂成一个不同的function,并多次呼吁坚持functions should do only one thing规则? 示例代码: A.find({ name: regex }).populate({ path: 'B', populate: { path: 'B.C', model: 'C' } }).exec(function(err, A) { var report = []; A.map(function(a)){ report[a.name] = []; D.aggregate([ { $match: { id: B._id } }, { $group: { _id: null, count: { $sum: 1 } […]

node.js中的信号量 – 使用计数器variables

我一直在学习JavaScript一段时间,我似乎无法理解为什么下面的代码将无法正常工作。 我试图使主执行线等待asynchronous函数调用的结束使用信号量技术。 你可以看看这里的代码: var fs = require("fs"); var data = ""; var asyncDone = false; var fstream = fs.createReadStream("text.txt"); fstream.setEncoding("utf-8"); fstream.on("data", function (chunk) { data += chunk; }); fstream.on("end", function() { console.log("reading done"); console.log(data); asyncDone = true; }); while (! asyncDone) { } console.log("program terminating"); 任何帮助将不胜感激,谢谢。