使用Cocos2d制作游戏的时候,总会涉及到对数据库访问的操作。
在访问的时候:
一个通信接口可能涉及到几个SQL查询,
而且下一次的查询结过,可能和上一次查询结果关联,
这就需要,把并行的js特性,改为串行。
通过,查询资料发现,使用 nodejs 的 async 就可以实现。
服务器端:
关于服务器的写法我就不在赘述了,送上两篇博文。
搭建nodejs环境(http://www.cocoachina.com/bbs/read.php?tid-458031-fpage-2.html)
nodejs的异步流程控制 (http://blog.fens.me/nodejs-async/)
客户端:
1)在ccc(CocosCreator简称CCC)中,添加脚本async.js
【这个脚本nodejs的根目录下有,可以通过npm进行安装,然后选择这个到CCC中即可】
2)如下图所示,添加脚本,添加的时候不要选择“导入为插件”。
3)之后就可以在方法中执行串行命令了:
3.1)使用时候不要忘记在脚本最上面引入脚本
var async = require('async');
3.2)编写自己的方法
// 用户点击申请房间按钮
clickApplyRoomButton : function(){
let self = this;
if(cc.sys.isNative){ window.io = SocketIO; }
else{ window.io = require('socket.io'); }
var socket = window.io(data.hostAddress);// 在data脚本中定义的全局变量
async.series(
[
function(callback){
socket.emit('访问服务器的接口名称1',参数1, ... 参数n ); // 传入参数
socket.on('IsRoomIDExit',function( 参数1, ... 参数m ){ // 服务器的返回值
// ... ... 返回值的利用
callback(null,'1');
});
},function(callback){
socket.emit('访问服务器的接口名称2',参数1, ... 参数n ); // 传入参数
socket.on('IsRoomIDExit',function( 参数1, ... 参数m ){ // 服务器的返回值
// ... ... 返回值的利用
callback(null,'1');
});
},function(callback){
socket.emit('访问服务器的接口名称3',参数1, ... 参数n ); // 传入参数
socket.on('IsRoomIDExit',function( 参数1, ... 参数m ){ // 服务器的返回值
// ... ... 返回值的利用
callback(null,'1');
});
}, function(callback){
socket.emit('访问服务器的接口名称4',参数1, ... 参数n ); // 传入参数
socket.on('IsRoomIDExit',function( 参数1, ... 参数m ){ // 服务器的返回值
// ... ... 返回值的利用
callback(null,'1');
});
} ]); },