Articles of asynchronous

循环通过任务瀑布 – 承诺蓝鸟

我正在寻找循环通过蓝鸟一些任务,只是使用超时作为实验机制。 [不希望使用asynchronous或任何其他库] var Promise = require('bluebird'); var fileA = { 1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five' }; function calculate(key) { return new Promise(function (resolve, reject) { setTimeout(function () { resolve(fileA[key]); }, 500); }); } Promise.map(Object.keys(fileA), function (key) { calculate(key).then(function (res) { console.log(res); }); }).then(function () { console.log('finish'); }); 结果是 finish, one, […]

在Node.js循环中设置setTimeout

对于setTimeout是如何工作的,我有点困惑。 我试图在一个循环中有一个setTimeout ,以便循环迭代相隔1秒。 每个循环迭代都会产生一个HTTP请求,而另一端的服务器似乎不能在如此短的时间内处理这么多的请求。 for (var i = 1; i<=2000 && ok; i++) { var options = { host:'www.host.com', path:'/path/'+i }; setTimeout(makeRequest(options, i), 1000); }; 为什么这不起作用,我怎么能做到这一点? 谢谢

NodeJS和asynchronous地狱

我刚刚来到这个可怕的情况,我有一个string的数组,每个代表一个可能存在的文件(例如var files = ['file1', 'file2', 'file3']我需要遍历这些文件名并尝试看看它是否存在于当前目录中,如果存在,停止循环,并忘记其余的剩余文件。所以基本上我想find这些文件的第一个现有的文件,并退回到一个硬编码的消息,如果没有发现。 这是我现在有: var found = false; files.forEach(function(file) { if (found) return false; fs.readFileSync(path + file, function(err, data) { if (err) return; found = true; continueWithStuff(); }); }); if (found === false) { // Handle this scenario. } 这不好。 它阻塞(readFileSync),因此它很慢。 我不能只为fs.readFile提供callback方法,这不是那么简单,因为我需要find第一个find的项目…而且callbackfs.readFile可以以任意顺序调用。 我想一种方法是有一个callback,增加一个计数器,并保持一个find/未find的信息列表,当它到达files.length计数,然后它检查通过find/未find的信息,并决定下一步该怎么做。 这是痛苦的。 我确实看到了IO中的性能优势,但这是不可接受的。 我有什么select?

如何正确提交蓝鸟的JSON.parse方法

我试图promisify JSON.parse方法,但不幸的是没有任何运气。 这是我的尝试: Promise.promisify(JSON.parse, JSON)(data).then((result: any) => {… 但我得到以下错误 Unhandled rejection Error: object

如何显示连续的实时更新,如Facebook的股票,meetup.com主页呢?

如何显示连续的实时更新浏览器,如Facebook的股票,meetup.com主页呢? 在python,PHP,node.js和在服务器端的性能影响是什么? 如果页面被像akamai这样的CDNcaching,我们又怎么能实现同样的更新呢?

了解具有fs模块的Node JS生成器

我一直对Node JS非常兴奋。 我终于决定closures并编写一个testing项目,以了解Node最新的Harmony构build中的生成器。 这是我非常简单的testing项目: https://github.com/kirkouimet/project-node 要运行我的testing项目,您可以轻松地从Github中提取文件,然后运行它: node –harmony App.js 这是我的问题 – 我似乎无法让节点的asynchronousfs.readdir方法与内置的生成器运行。 其他项目,如银河和暂停似乎能够做到这一点。 这是我需要修复的代码块。 我想能够实例化FileSystemtypes的对象并调用其上的.list()方法: https://github.com/kirkouimet/project-node/blob/4c77294f42da9e078775bb84c763d4c60f21e1cc/FileSystem.js#L7-L11 FileSystem = Class.extend({ construct: function() { this.currentDirectory = null; }, list: function*(path) { var list = yield NodeFileSystem.readdir(path); return list; } }); 我需要提前做些什么来将节点的fs.readdir转换成一个生成器? 一个重要的注意事项是,我正在parsing创build的所有类函数。 这使我可以处理发电机的function,而不像普通的function https://github.com/kirkouimet/project-node/blob/4c77294f42da9e078775bb84c763d4c60f21e1cc/Class.js#L31-L51 这个项目我一直很难过。 会爱任何援助! 这是我想要完成的: 大量使用带有inheritance的John Resig的JavaScript Class支持修改版本的类 使用生成器获得对Node的asynchronous调用的内联支持 编辑 我试图实现你的例子function,我遇到了一些麻烦。 list: function*(path) { var […]

使用nodejsasynchronous和请求模块

我试图使用asynchronous和请求模块在一起,但我不明白如何通过callback。 我的代码是 var fetch = function(file, cb) { return request(file, cb); }; async.map(['file1', 'file2', 'file3'], fetch, function(err, resp, body) { // is this function passed as an argument to _fetch_ // or is it excecuted as a callback at the end of all the request? // if so how do i pass a callback to […]

Node.js:node.js中的http.get方法是否有同步版本?

node.js中有没有同步版本的http.get方法? 就像是: http.getSync({ host: 'google.com', port: 80, path: '/' }, function(response){ }); console.log(response) 有时候这会非常有用。

asynchronous初始化express.js(或类似的)应用程序

考虑一个例子:我有以下express.js应用程序(请参阅下面的代码片段)。 我想有一个持久连接到数据库,并且一个持久连接到我自己的服务(这需要asynchronous调用来启动)在整个应用程序生命周期。 还有几个入口点,即不仅可以通过HTTP协议访问我的应用程序。 当然,我想避免服务初始化代码重复,并可能有几个如同步初始化服务。 /* app.js */ var app = require('express')(); // set views, use routes, etc. var db = require('monk/mongoose/etc')(…); // happily, usually it's a sync operation var myService = require('./myService'); // however, it's possible to have several such services myService.init(function(err, result) { // only here an initialization process is finished! }); module.exports.app = […]

使用node.js运行许多并行http请求

我的任务是将一个进程分成许多并行运行的小进程,分发给一些从机。 请求通过HTTP进入服务器,服务器把它分成一些发送给从属机器的subprocess,等待所有的从请求返回响应,然后将聚合结果整理成一个数据对象,作为顶级请求。 我认为node.js会很有用,但是因为它是单线程的,所以我不能确定这是否可行,或者是否会阻止等待每个请求返回,然后再转到下一个请求。 这是可能的node.js? 如果是这样,有人能指出我的方向吗? 即节点模块使用或概述如何完成? 谢谢你的帮助。