【问题标题】:async and nodes js function console.log recieves NaN, NaN, Nan need help outputting the the string out as a string and not a number异步和节点js函数console.log收到NaN,NaN,Nan需要帮助将字符串输出为字符串而不是数字
【发布时间】: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


【解决方案1】:

setTimeout(function() { callback(arg * 2); }, 1000);

这一行,arg不是数字,不能用* 2

【讨论】:

  • 那我可以用什么代替数字呢?我明白你的意思我只是不认为这是一个很好的答案,一个关于我将如何解决这个问题的例子会很棒
  • @user3385289 真的不可能知道如何修复它。您希望将字符串乘以 2 做什么?
  • 我在问如何解决这个问题我不需要将参数相乘它是一个明显的错误我想要做的只是输出 [dfhfgh, gfhjghj, gfhjghj, fghjgh, ghjfhj] 我不'不需要其他任何东西我已经使用了一个示例来帮助我构建此代码,因此我正在询问修改它的正确方法,因此我只输出字符串
猜你喜欢
  • 2019-11-10
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
  • 2021-01-01
  • 1970-01-01
  • 2016-09-15
  • 2018-05-29
相关资源
最近更新 更多