从函数返回的结果(javascript中,的NodeJS) [英] return results from a function (javascript, nodejs)
本文介绍了从函数返回的结果(javascript中,的NodeJS)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
谁能帮我这个code?我需要返回一个值形成routeToRoom功能:
VAR SYS =要求('SYS'); 功能routeToRoom(用户ID,PASSW){
变种roomId = 0;
VAR nStore =要求('nstore / lib目录/ nstore')扩展(需要('nstore / lib中/ nstore /查询)());
VAR用户= nStore.new(数据/ users.db',函数(){ users.find({
用户:用户ID
传:PASSW
},(功能(错了,结果){
如果(ERR){
roomId = -1;
}其他{
roomId = results.creationix.room;
}
}));
});
返回roomId;
}
sys.puts(routeToRoom(亚历克斯,123));
不过,我总是得到:0
我猜返回roomId;
之前 roomId = results.creationix.room
执行。可能有人能帮我解决这个code?
解决方案
函数routeToRoom(用户ID,PASSW,CB){
变种roomId = 0;
VAR nStore =要求('nstore / lib目录/ nstore')扩展(需要('nstore / lib中/ nstore /查询)());
VAR用户= nStore.new(数据/ users.db',函数(){
users.find({
用户:用户ID
传:PASSW
},功能(错了,结果){
如果(ERR){
roomId = -1;
}其他{
roomId = results.creationix.room;
}
CB(roomId);
});
});
}
routeToRoom(亚历克斯,123,功能(ID){
的console.log(ID);
});
您需要使用回调。这就是IO如何异步工作。顺便说一句 sys.puts
是德precated
Could anyone help me with this code? I need to return a value form a routeToRoom function:
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"));
But I get always: 0
I guess return roomId;
is executed before roomId=results.creationix.room
. Could someone help me with this code?
解决方案
function routeToRoom(userId, passw, cb) {
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;
}
cb(roomId);
});
});
}
routeToRoom("alex", "123", function(id) {
console.log(id);
});
You need to use callbacks. That's how asynchronous IO works. Btw sys.puts
is deprecated
这篇关于从函数返回的结果(javascript中,的NodeJS)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文