Tag: callback

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(); 结果 […]

Node.js从MySQL查询返回结果

我有以下函数从数据库中获取一个hex代码 function getColour(username, roomCount) { connection.query('SELECT hexcode FROM colours WHERE precedence = ?', [roomCount], function(err, result) { if (err) throw err; return result[0].hexcode; }); } 我的问题是,我在callback函数中返回结果,但getColour函数不返回任何东西。 我希望getColour函数返回result[0].hexcode的值。 在我调用getColour的那一刻,它不会返回任何东西 我试过做类似的事情 function getColour(username, roomCount) { var colour = ''; connection.query('SELECT hexcode FROM colours WHERE precedence = ?', [roomCount], function(err, result) { if (err) throw err; colour = […]

在Nodejs中pipe理大量的callbackrecursion

在Nodejs中,几乎没有阻塞的I / O操作。 这意味着几乎所有的nodejs IO代码都涉及很多callback。 这适用于从数据库,文件,进程等读写数据,这是一个典型的例子: var useFile = function(filename,callback){ posix.stat(filename).addCallback(function (stats) { posix.open(filename, process.O_RDONLY, 0666).addCallback(function (fd) { posix.read(fd, stats.size, 0).addCallback(function(contents){ callback(contents); }); }); }); }; … useFile("test.data",function(data){ // use data.. }); 我期待写代码将做许多 IO操作,所以我期望写很多callback。 我很喜欢使用callback,但我担心所有的recursion。 我是否有陷入过度recursion的危险,并在某个地方吹过堆栈? 如果我用成千上万的callback函数向我的键值存储进行数千次单独写入,我的程序是否会最终崩溃? 我是误解还是低估了影响? 如果没有,有没有办法解决这个问题,同时仍然使用Nodejs的callback编码风格?

Node.js Array.map()是asynchronous的吗?

我可以指望每次doSomething()被调用时都完成映射吗? nodeIDs = $.map(nodeIDs, function(n){ return n.match(/\d+$/); }); doSomething(nodeIDs); 我认为node.js中的所有callback都是asynchronous的? 我读过一篇关于一般编程的文章,callback可能是同步的,但我不确定node.js?

我们如何从node.js中的callback函数访问variables?

var sys = require('sys'); var exec = require('child_process').exec; var cmd = 'whoami'; var child = exec( cmd, function (error, stdout, stderr) { var username=stdout.replace('\r\n',''); } ); var username = ? 如何从exec函数中查找外部用户名?

是否socket.io发出适当的callback?

最近我一直在使用socket.io,发现这个有趣的事情,我可以发出这样的函数callback。 我开始像这样在客户端发出: client.emit('eventToEmit', dataToEmit, function(error, message){ console.log(error); console.log(message); }); 然后我可以像这样从服务器端发起一个callback: client.on('eventToEmit', function(data, callback){ console.log(data); callback('error', 'message'); }); 一切工作正常,没有错误,但我有兴趣,如果做这样的事情是适当的,因为我没有看到任何类似的文件或任何例子到目前为止。

通过node.js理解javascriptcallback的概念,特别是在循环中

我刚刚开始与node.js。 我已经做了一些Ajax的东西,但没有太复杂,所以callback仍然是我的头。 我看着asynchronous,但我需要的是顺序运行一些function。 我基本上有一些东西,从一个API拉一些JSON,创build一个新的,然后做了什么。 显然,我不能只运行它,因为它一次运行一切,并有一个空的JSON。 大多数进程必须按顺序运行,但是如果从API中拉取JSON,它可以在等待的时候拉取其他JSON,那么这很好。 把callback放在循环中时我感到困惑。 我该如何处理索引? 我想我已经看到一些在循环内部使用callback的地方作为一种recursion函数,并且根本不使用for循环。 简单的例子会帮助很多。

从fs.readFileSync()到fs.readFile()的Node.js

我试图让我的头在Node.js同步与asynchronous,尤其是阅读一个HTML文件。 在请求处理程序中,我正在使用的同步版本,其工作原理如下: var fs = require("fs"); var filename = "./index.html"; var buf = fs.readFileSync(filename, "utf8"); function start(resp) { resp.writeHead(200, {"Content-type":"text/html"}); resp.write(buf); resp.end(); } exports.start=start; 什么版本使用readFile()? 我明白,readFile是asynchronous的,所以理论上我应该等待整个文件在呈现之前被读取,所以我应该引入一个addListener? 我可能会混淆不同的东西。 编辑:我试图重构这样的代码: var fs = require("fs"); var filename = "./index.html"; function start (resp) { resp.writeHead(200, {"Content-Type":"text/html"}); fs.readFile(filename, "utf8", function (err, data) { if (err) throw err; resp.write(data); }); resp.end(); […]

nodeJscallback简单的例子

任何人都可以给我一个简单的nodeJscallback的例子,我已经在很多网站上search过相同的东西,但是不能正确理解,请举个简单的例子。 getDbFiles(store, function(files){ getCdnFiles(store, function(files){ }) }) 我想要做那样的事情