Tag: callback

我怎样才能将callback传递给我传递给“vo”库的生成器?

我想了解callback是如何工作的,所以我创build了一个函数,并且传递了第二个名为“callback”的参数,我使用“callback(arr)”在函数结尾处调用该函数。 不过,我收到一个错误,说:“callback是不是一个function”? 你能告诉我我做错了什么吗? UPDATE vo是一个nodejs库,它使用一个生成器函数*()并运行所有的yield。 这基本上是一个处理asynchronous代码,lesscallback的方法(是的,我知道我也使用了callback,但这是一个很好的select)。 一个更受欢迎的图书馆,做同样的事情是合作。 链接到vo: https : //github.com/matthewmueller/vo var Nightmare = require('nightmare'); var vo = require('vo'); function* MyFunction(query, callback) { arr = []; for (i = 0; i < 1; i++) { arr.push(yield Nightmare({ show: true }).goto(`http://google.com`) .inject('js', 'jquery-3.1.0.js') .evaluate(() => { var title; title = 1 extend = 2 var img; […]

了解node.js事件队列和process.nextTick

我很难理解到底是如何process.nextTick做它的事情。 我以为我明白,但似乎无法复制我觉得这应该工作: var handler = function(req, res) { res.writeHead(200, {'Content-type' : 'text/html'}); foo(function() { console.log("bar"); }); console.log("received"); res.end("Hello, world!"); } function foo(callback) { var i = 0; while(i<1000000000) i++; process.nextTick(callback); } require('http').createServer(handler).listen(3000); 当foo循环时,我会发送多个请求,假设handler将在foo后面排队几次,只有当foo完成时, callback才会被排队。 如果我对这个方法是正确的,我认为结果将如下所示: received received received received bar bar bar bar 但事实并非如此,这只是连续的: received bar received bar received bar received bar 我看到foo在执行预期的callback之前正在返回,但似乎callback是在线,而不是在队列的末尾,在所有的请求后面。是这样的吗? 也许我只是不明白节点中的事件队列是如何工作的。 请不要在这里指出我的意思。 […]

node.js – 为什么匿名callback

我正在学习node.js,并且已经注意到几乎所有的callback函数都被内联为匿名callback函数。 这样做背后有一个具体原因吗? 我认为使用一个有名的callback函数,并将其定义为一个本地函数有两个优点:1.它更干净,不会将函数变成一个巨大的代码块2.给定一个合适的名称,它充当文档 – 描述什么callback是应该做的

Nodejs的callback机制 – 哪个线程处理callback?

我是nodeJS的新手,想知道Node的单实例模型。 在一个简单的nodeJs应用程序中,当某些阻塞操作与callbackasynchronous处理时,运行nodeJs的主线程是否也处理callback? 如果请求是从数据库中获取一些数据,并且有100个并发用户,并且每个db操作需要几秒钟,当最后触发(对于每个连接)callback时,接受这些请求的主线程用于执行callback以及? 如果是这样,nodeJs如何扩展,它如何快速响应?

如何打破async.js每个循环?

您好我使用node.js asynchronous模块asynchronous实现for循环。 我的问题是:如何打破循环执行并退出循环? 我试图给予return , return false但没有运气。 这里是示例代码: async.until( function() { return goal; }, function(callback) { async.each(_rules, function(rule,callback) { var outcome = true; …. some code …. if(changes){ console.log("hi"); return false;// HERE I NEED TO BREAK } else callback(); }, function(err){ } ); if (!changes || session.process) goal = true; callback(); }, function(err){ callback(session); } […]

环回是什么意思?

我正在尝试学习回送,但是我不太了解函数调用中“cb”的含义。 我读了这个在loopback文件中,variables'cb'代表什么? 我对nodejs中的callback有基本的了解,但是我只是不了解loopback中的cb。 例如, http://docs.strongloop.com/display/public/LB/Remote+methods 。 module.exports = function(Person){ Person.greet = function(msg, cb) { cb(null, 'Greetings… ' + msg); } Person.remoteMethod( 'greet', { accepts: {arg: 'msg', type: 'string'}, returns: {arg: 'greeting', type: 'string'} } ); }; 那个cb是什么意思? 我们怎样才能知道它接受两个参数,null和一个string? 希望有人可以帮忙。

nodeJS从callback中返回值

我正在构build一个应用程序,在特定的调用中,我必须阻止并等待来自validation查询的结果,然后再继续。 function authenticate(userid, hash) { mysql_client.query("SELECT `hash` FROM `auth` WHERE `userid` = " + userid, function selectCb(err, results, fields) { if (err) { client.send("Error communicating with mysql, please retry your request"); return false; } if(results.length == 0 || results[0].hash != hash) { client.send("Error comparing authentication data with database, please retry request"); return false; } return […]

async.map不会在nodejs中调用callback

我正在尝试使用async.map,但不能在下面的例子中调用callback的一些不明原因,函数d应该显示数组r,但它没有。 实际上就好像d从来没有叫过。 我一定在做一些非常错误的事情,但是搞不清楚 async = require('async'); a= [ 1,2,3,4,5]; r=new Array(); function f(callback){ return function(e){ e++; callback(e);} } function c(data){ r.push(data); } function d(r){ console.log(r);} async.map(a,f(c),d); 预先感谢您的帮助

在KOA中使用callback与nodejs

最近我正在研究一个新的项目,这个项目在nodejs中使用JavaScriptcallback。 现在我们使用KOA,但是当我们尝试使用ES6生成器和callback函数时会发生问题。 //Calback function function load(callback){ result = null; //Do something with xmla4js and ajax callback(result); return result; } 现在在KOA我需要调用load和响应JSON到客户端,所以我使用下面的代码: router= require('koa-router'); app = koa(); app.use(router(app)); app.get('load',loadjson); function *loadJson(){ var that = this; load(function(result){ that.body = result; }); } 但我得到这个错误: _http_outgoing.js:331 throw new Error('Can\'t set headers after they are sent.'); ^ Error: Can't set headers […]

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?