Tag: asynchronous

调用循环内的asynchronous函数

var path; for (var i = 0, c = paths.length; i < c; i++) { path = paths[i]; fs.lstat(path, function (error, stat) { console.log(path); // this outputs always the last element }); } 如何访问传递给fs.lstat函数的pathvariables?

如何等待小溪完成pipe道? (的NodeJS)

我有一个承诺的循环数组,所以我用Promise.all来通过它们,然后调用。 let promises = []; promises.push(promise1); promises.push(promise2); promises.push(promise3); Promise.all(promises).then((responses) => { for (let i = 0; i < promises.length; i++) { if (promise.property === something) { //do something } else { let file = fs.createWriteStream('./hello.pdf'); let stream = responses[i].pipe(file); /* I WANT THE PIPING AND THE FOLLOWING CODE TO RUN BEFORE NEXT ITERATION OF FOR […]

使用node.js进行Javascriptasynchronousexception处理

我目前正在研究一个node.js应用程序,我有通常的asynchronous代码问题。 我正在Node的HTTP模块上实现一个服务服务器。 这个服务器支持(表示)路线。 例如,我有这样的代码: server.any("/someRoute",function(req,resp){ resp.end("this text is sent to clients via http") }); 服务器需要能够承受失败,当传递给任何一个函数有问题时,我不想让整个服务器崩溃。 当我写代码看起来像这样的问题发生: server.any("/someRoute",function(req,resp){ setTimeout(function(){ throw new Error("This won't get caught"); },100); }); 我不明白我怎么可能在这里发现错误。 我不想通过一个服务器端故障使服务器崩溃,而是想要服务500。 我能想出的唯一解决scheme实际上并不具有performance力。 我只想出了使用process.on("uncaughtException",callback)和类似的代码使用节点0.8 Domains (这是一个部分的补救措施,但领域是目前越野车,这仍然不是很有performance力,因为我最终不得不创造每个句柄的一个域)。 我想完成的是throw一个函数的throw动作绑定到一个作用域,理想的解决scheme就像将所有抛出的错误从一个函数绑定到一个特定的处理函数一样。 这可能吗? 在这种情况下处理错误的最佳做法是什么? 我想强调的是,它应该能够继续服务请求后,不良请求,并重新启动服务器的每个请求或创build域的每个处理程序和捕获他们的未捕获的exception对我来说似乎是一个坏主意。 另外 – 我听到承诺可能会帮助我(有关兑现承诺的事情),可以承诺在这种情况下援助我吗?

NodeJs,javascript:.forEach似乎是asynchronous的? 需要同步

我目前正在与3个朋友一起使用nodeJs,expressJs,MongoDB,html5,…因为我们对这些技术相当陌生,所以遇到了一些问题。 我找不到解决scheme的一个大问题是某些代码的asynchronous执行。 我想每一个循环完成,以便我有一个更新的在线朋友列表,并执行res.render(我通过在线朋友列表),因为目前它完成res.render之前完成循环。 码: function onlineFriends(req, res) { var onlinefriends = new Array(); onlinefriends.push("mark"); FriendList.findOne({ owner: req.session.username }, function (err, friendlist) { friendlist.friends.forEach(function (friend) { // here forEach starts OnlineUser.findOne({ userName: friend }, function (err, onlineFriend) { if (onlineFriend != null) { onlinefriends.push(onlineFriend.userName); console.log("a loop"); } }); }); console.log("online friends: " + onlinefriends); console.log("redirecting"); res.render('index', […]

ES6承诺 – 在承诺链中调用同步function

我目前正在尝试承诺,并有一个非常基本的问题! 在承诺链中,调用同步函数是不好的做法吗? 例如: .then(function(results) { if(checkIfResultInMemory(results) === true){ return getTotalFromMemory() } return results; }) 还是应该我的同步function重构承诺还呢?

Node.Js VS HttpAsync(asp.net)

在阅读了很多关于nodejs的东西之后,我仍然问自己: 什么是超过asp.net HttpAsync请求的好处 ? 唯一的限制(如我所见)是IIS限制的并发请求数。 我试图画出我目前的理解: 任何帮助? .net/ado.net上的任何asynchronous操作都不能执行nodejs的任何操作吗?

DeprecationWarning:不build议调用不带callback的asynchronous函数。 – 如何find“function:”在哪里?

我最近更新了我的节点到7.2.1,并注意到有一个警告: (node:4346)DeprecationWarning:不build议调用不带callback的asynchronous函数。 这是什么4346 ? 我只有在js文件中有2000行,所以它不能是一个行号。 我在哪里可以find代码?

JavaScriptdevise模式 – 处理不需要的asynchronous

我很新的基于事件的编程(使用node.js)。 我相信有一点我不太在意,因为我遇到了一个又一个问题。 总之,这个问题在处理asynchronous性问题的时候似乎正在妨碍你。 在我的情况下,最常见的情况是使用第三方库,这些库在devise时没有阻塞,并且推广了基于callback的API。 例如:现在我正在写一些大量使用mranney的node-redis库的东西 。 我的程序正在抓取RSS源并将结果放入redis。 我正在使用我认为是re​​dis常见的策略: 抓取feed,将结果存储为一个redis hash,其中包含一个类似feed:<feedId>:results:<timestamp>的键feed:<feedId>:results:<timestamp> 。 在feed:<feedId>:latest存储对最新结果的引用feed:<feedId>:latest 。 var redis = require(“redis”); var client = redis.createClient(); var get_latest_results = function(feedId){ client.get('feed:+ feedId +':latest',function(err,res){ var latest_reading_key = res.toString(); client.hgetall(latest_reading_key,function(err,res){ var latest_reading = res; }); }); //如何为这个函数指定一个返回值? } 在get_latest_results函数的底部放置return latest_reading失败,因为在函数准备好退出之前,不会定义latest_reading。 在hgetall调用中放置return latest_reading失败,因为return指向callback,并被get_latest_results忽略。 这只是我似乎不断写入自己的方式的一个例子。 也许我正在试图把这个方块塞进圆孔里,因为我不知道更好。 这似乎应该有一个解决这类问题的不速之客的方法。

在所有调用都是asynchronous的情况下,如何在lambda中构build连续的AWS服务调用?

我来自java的背景,所以在Lambda所需要的JavaScript惯例上有点新手。 我有一个lambda函数,这意味着要按照特定的顺序执行几个AWS任务,具体取决于前一个任务的结果。 鉴于每个任务都asynchronous报告其结果,我想知道是否正确的方式确保它们都以正确的顺序发生,并且一个操作的结果可用于调用下一个函数。 看起来好像我必须调用前面函数的callback中的每个函数,但是看起来这样会产生某种深层嵌套,并想知道这是否是正确的方法。 举例来说,这些函数需要一个DynamoDB getItem,接着调用SNS来获得一个端点,然后是一个SNS调用来发送消息,然后是DynamoDB写入。 什么是正确的方式来做lambda的JavaScript,占所有的asynchronous性?

为什么setTimeout阻止我的Node.js应用程序?

拿这个代码,一个Http服务器的典型节点js例子,我添加了一个5秒的延迟来模拟一些在别处发生的asynchronous工作: const http = require('http'); const hostname = '127.0.0.1'; const port = 8080; http.createServer((req, res) => { setTimeout(()=>{ res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World\n'); },5000); }).listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); }); 我期望的是,当我打开5个选项卡,比如打开每个选项卡时,延迟半秒钟,服务器应该用这个时间或多或less地“响应”每个选项卡: t=0s – I open first tab t=0.5s – I open second tab t=1s – I open third tab […]