Tag: asynchronous

是否有纯粹的基于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查询作为同步

http.createserver与node.js中的net.createserver

我无法理解node.js中的net.createserver和http.createserver之间的区别。 我已阅读位于这两个urlhttps://nodejs.org/api/net.html#/net_net,https://nodejs.org/api/http.html#/http_class_http_server上的两种方法的文档。 据我所知,http.createserver创build一个http服务器,但文档说net.createserver创build一个tcp服务器。 我知道tcp是http的传输协议,并且http服务器设置为读取http请求标头。 我也很了解node.js中甚至发射器的概念。 不过,我不明白这个tcp服务器的概念,为什么会在node.js。 上下文是我正在编写“node.js in action”一书中的聊天应用程序示例。 谢谢你的帮助

以Layman的术语理解asynchronous代码

我理解asynchronous的基本原理:事情不会按顺序执行。 据我所知,有一些非常强大的东西。 但是对于我的生活,我无法将自己的头围绕在代码上。 让我们来看看我写的asynchronousNode.JS代码…但是并没有真正得到。 function newuser(response, postData) { console.log("Request handler 'newuser' was called."); var body = '<html>' + '<head>' + '<meta http-equiv="Content-Type" content="text/html; ' + 'charset=UTF-8" />' + '</head>' + '<body>' + '<form action=" /thanks" method="post">' + '<h1> First Name </h1>' + '<textarea name="text" rows="1" cols="20"></textarea>' + '<h1> Last Name </h1>' + '<textarea name="text" rows="1" […]

在Node.js中并行化任务

在JS中我有一些任务是资源密集型的。 对于这个问题,让我们假设他们是一些沉重的计算,而不是系统访问。 现在我想同时运行任务A,B和C,并在完成时执行一些函数D. asynchronous库为此提供了一个很好的脚手架: async.parallel([A, B, C], D); 如果我正在做的只是计算,那么它仍然会同步运行(除非库将任务放在不同的线程本身,我认为不是这种情况)。 我如何使这实际上平行? 通常情况下,asynchronous代码不会阻塞调用者(使用NodeJS时)做什么? 它开始了一个孩子的过程 ?

从函数返回结果(javascript,nodejs)

任何人都可以帮我用这个代码? 我需要返回一个值的formsrouteToRoom函数: var sys = require('sys'); function routeToRoom(userId, passw) { var roomId = 0; var nStore = require('nstore/lib/nstore').extend(require('nstore/lib/nstore/query')()); var users = nStore.new('data/users.db', function () { users.find({ user: userId, pass: passw }, (function (err, results) { if (err) { roomId = -1; } else { roomId = results.creationix.room; } })); }); return roomId; } sys.puts(routeToRoom("alex", "123")); […]