Articles of asynchronous

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 […]

是否有纯粹的基于Promise的方法来映射/连接集合?

asynchronous与Q一般 我正在学习Node.js开发,并试图围绕pipe理asynchronous“callback地狱”的策略包装我的大脑。 我探索的两个主要策略是Caolan McMahon的asynchronous模块和Kris Kowal的基于承诺的Q模块。 像许多其他人一样,我仍然在努力去理解什么时候应该使用一个而不是另一个。 但是,总的来说,我已经发现许诺和基于Q的代码稍微直观一点,所以我一直在朝着这个方向前进。 一般地映射/连接集合 不过,我仍然坚持使用asynchronous模块的function来pipe理集合 。 从Java和Python的背景来看,大多数时候我使用一个集合,逻辑如下所示: 初始化一个新的空集合,在其中存储结果。 对旧集合执行for-each循环,对每个元素应用一些逻辑并将结果推送到新的空集合中。 当for-each循环结束时,继续使用新的集合。 在客户端JavaScript中,我习惯于使用jQuery的map()函数 …传递第2步的逻辑,并将第3步的结果作为返回值。 感觉像相同的基本方法。 使用asynchronous和Q映射/连接集合 节点端asynchronous模块具有相似的映射和连接function,但是它们不会将连接结果返回到原始范围级别。 你必须下降到callback地狱使用结果。 例: var deferred = Q.defer(); … var entries = [???]; // some array of objects with "id" attributes async.concat(entries, function (entry, callback) { callback(null, entry.id); }, function (err, ids) { // We now have the […]

Javascript是同步(阻塞)还是asynchronous(非阻塞)默认情况下

我想抓住Javascriptasynchronous函数和callback。 我陷入了callback函数的概念,在某些地方我正在阅读它们:它们被用来顺序执行代码(主要在jQuery的上下文中,例如animation)和一些地方,特别是在Nodejs的上下文中; 它们用于并行执行asynchronous并避免代码的阻塞。 那么这个专题的一些专家可以澄清这一点,并清除我脑海中的这个模糊(例子??)。 所以我可以使用callback函数 或者完全取决于你在哪里调用/在你的代码中放置一个callback函数? 。 谢谢, PS:我很害怕这个问题会很接近主观,但我仍然可以期待具体的答案(也许是一些例子) 编辑:其实这是互联网的例子,使我ambigous: function do_a(){ // simulate a time consuming function setTimeout( function(){ console.log( '`do_a`: this takes longer than `do_b`' ); }, 1000 ); } function do_b(){ console.log( '`do_b`: this is supposed to come out after `do_a` but it comes out before `do_a`' ); } do_a(); do_b(); 结果 […]

如何在多个其他函数完成后才执行Javascript函数?

我的具体问题是,我需要执行(可能)大量的Javascript函数来准备像batch file(每个函数调用添加一些信息到同一个batch file),然后,所有这些调用完成后,执行一个最终函数发送batch file(比如说,把它作为HTML响应发送)。 我正在寻找一个通用的JavaScript编程模式。 泛化问题:给定Javascript函数funcA(),funcB()和funcC(),我会找出命令执行的最佳方法,以便funcC和funcB执行后才执行funcC。 我知道我可以使用这样的嵌套callback函数: funcA = function() { //Does funcA stuff funcB(); } funcB = function() { //Does funcB stuff funcC(); } funcA(); 我甚至可以通过传递callback参数来使这个模式更加普遍,但是这个解决scheme变得非常冗长。 我也熟悉Javascript函数链接,解决scheme可能如下所示: myObj = {} myObj.answer = "" myObj.funcA = function() { //Do some work on this.answer return this; } myObj.funcB = function() { //Do some more work on […]

与fs和蓝鸟的承诺

我目前正在学习如何在nodejs中使用promise 所以我的第一个挑战是列出目录中的文件,然后使用asynchronousfunction获取每个步骤的内容。 我提出了以下的解决scheme,但有一种强烈的感觉,这并不是最优雅的方式,特别是第一部分,我将asynchronous方法“转向”承诺 // purpose is to get the contents of all files in a directory // using the asynchronous methods fs.readdir() and fs.readFile() // and chaining them via Promises using the bluebird promise library [1] // [1] https://github.com/petkaantonov/bluebird var Promise = require("bluebird"); var fs = require("fs"); var directory = "templates" // turn fs.readdir() into […]

什么是node.js最好的控制stream模块?

我已经使用了caolan的asynchronous模块 ,这是非常好的,但是跟踪错误和通过控制stream传递数据的不同方式导致开发有时是非常困难的。 我想知道是否有更好的select,或目前在生产环境中使用什么。 谢谢阅读。

Node.jsasynchronous同步

我怎样才能做这个工作 var asyncToSync = syncFunc(); function syncFunc() { var sync = true; var data = null; query(params, function(result){ data = result; sync = false; }); while(sync) {} return data; } 我试图从asynchronous获得同步function,我需要它使用FreeTdsasynchronous查询作为同步