私はnode.js + socket.io + mysqlで小さなゲームを作ろうとしています。なぜこのJSコードがいくつかの単純なコード行でブロックされていますか?
node.jsサーバーは、フィールドとそのアイテムに関するデータベース情報(40x40)を読み取ります。この情報はそれ自身を保持し、要求に応じて提供します。
問題は、単純にリクエストを送信すると情報が表示されることです。しかし、セクタやオブジェクトを配列に入れたりするなど、この情報が入ってから何かをしようとすると、要求しません。私は情報を取得する時間を許可する関数の前にタイムアウトを入れようとしました。私はボタンにそれを置こうとしました。助けてくれなかった。すべてをブロックするコードはで、/*
と*/
の間です。このコードなしでうまく動作します。
server.js
:var mysql = require('mysql'); var io = require('socket.io').listen(8080); var TESTGAME = 'testgame'; var TABLES_MAP1 = 'map1'; var client = mysql.createClient({ user: 'root', password: '', }); client.query('USE '+TESTGAME); client.query( ('SELECT * FROM '+TABLES_MAP1+' WHERE id_sector_x < 40 && id_sector_y < 40'), function(err, results, fields) { if (err) {throw err;} Map1 = (results); io.sockets.on('connection', function (socket) { socket.emit('info', Map1); socket.on('back', function (data) { console.log(data); }); }); client.end(); } );
私の英語のため申し訳ありませんclient.html
:<!doctype html> <html> <head> <meta charset="utf-8"> <title>Map</title> <script src="http://127.0.0.1:8080/socket.io/socket.io.js"></script> <script src="json.js" type="text/javascript"></script> <script type='text/javascript'> window.onload = function() { var socket = io.connect('http://127.0.0.1:8080'); socket.on('info', function (data) { Mappp = (data); socket.emit('back', Mappp.length); }); }; Map1=Mappp; function mapp(){ m=0; //As info looks like this [1600] i need to make it look like this [40][40]. So this m will be m++ on each iteration to know what info should be put in. for (x=0;x<40;x++){ for (y=0;y<40;y++){ /* switch (Map1[m].type_sector) { case "grass": map[x][y]=0; [break] case "water": map[x][y]=1; [break] case "swamp": map[x][y]=2; [break] default: map[x][y]=0; [break] }; switch (Map1[m].obj_sector) { case "no": objectMap[x][y]=0; [break] case "wall": objectMap[x][y]=1; [break] default: objectMap[x][y]=0; [break] }; */ m++; } } window.alert('Done'); } setTimeout(mapp, 1000); </script> <form name=""> <input type="submit" value="call mapp" onclick=mapp()> </form> </head> <body> <script type="text/javascript"> </script> </body> </html>
:)
ありがとうございます:
mapp()
機能を調整する必要があります!私はまだ評判はないが、後で投票する)) – user1086671