【发布时间】:2014-04-09 08:01:53
【问题描述】:
完整的代码和我遇到的错误我真的很想让输出正常工作,这样我就可以继续我的代码了
var app = require('express')()
, server = require('http').createServer(app)
, fs = require('fs')
, exec = require('child_process').exec
, io = require('socket.io').listen(server);
var async = require('async');
server.listen(process.env.PORT);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/client/index.html');
// console.log(async);
});
io.sockets.on('connection', function (socket) {
//socket.emit('dinpu', { hello: 'world' });
// myModule('fam@btin.com:asdfef');
socket.on('dout', function (data) {
//module2(data);
//console.log(JSON.parse(data.message));
for(i = 0; i < data.message.length; i++) {
//data.message[i] = data.message[i].replace(/"/g, "");
}
module1(data.message);
module2(data.message);
function module1(data) {
console.log(data);
}
function async(arg, callback) {
console.log('do something with \''+arg+'\', return 1 sec later');
setTimeout(function() { callback(arg * 2); }, 1000);
}
function module2(data) {
function final() { console.log('Done', results); }
var items = data;
var results = [];
function series(item) {
if(item) {
async( item, function(result) {
results.push(result);
return series(items.shift());
});
} else {
return final();
}
}
series(items.shift());
}
});
});
除了这部分,一切都很好
function final() { console.log('Done', results); }
我得到结果
do something with 'dfhfgh', return 1 sec later
do something with 'gfhjghj', return 1 sec later
do something with 'gfhjghj', return 1 sec later
do something with 'fghjgh', return 1 sec later
do something with 'ghjfhj', return 1 sec later
Done [ NaN, NaN, NaN, NaN, NaN ]<<< this is the error I need it to output the strings
任何帮助修复我的代码,我将不胜感激 :)。
我现在自己解决了这个问题,经过仔细查看后没有多少有用的 cmets 我设法让它工作
所以在纠正了我的节点服务器之后,我现在得到了正确的结果,下面是正确的代码和结果
var app = require('express')()
, server = require('http').createServer(app)
, fs = require('fs')
, exec = require('child_process').exec
, io = require('socket.io').listen(server);
var async = require('async');
server.listen(process.env.PORT);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/client/index.html');
// console.log(async);
});
io.sockets.on('connection', function (socket) {
//socket.emit('dinpu', { hello: 'world' });
// myModule('fam@btin.com:asdfef');
socket.on('dout', function (data) {
//module2(data);
//console.log(JSON.parse(data.message));
for(i = 0; i < data.message.length; i++) {
//data.message[i] = data.message[i].replace(/"/g, "");
}
module1(data.message);
module2(data.message);
function module1(data) {
console.log(data);
}
function async(arg, callback) {
console.log('do something with \''+arg+'\' return 1 sec later');
setTimeout(function() { callback('\''+arg+'\''); }, 1000);
}
function module2(data) {
function final() { console.log('Done', '\''+results+'\''); }
var items = data;
var results = [];
function series(item) {
if(item) {
async( item, function(result) {
results.push(result);
return series(items.shift());
});
} else {
return final();
}
}
series(items.shift());
}
});
});
结果
do something with 'sdfg' return 1 sec later
do something with 'srg' return 1 sec later
do something with 'sdf' return 1 sec later
Done ''sdfg','srg','sdf''
【问题讨论】:
-
你希望它输出什么?
-
[ dfhfgh, gfhjghj, gfhjghj, fghjgh, ghjfhj ]
-
然后尝试删除
* 2部分.. -
@GeoPhoenix 这只会导致完全相同的错误
标签: javascript node.js asynchronous nan