【cocos2d-js官方文档】六、cc.async

概述

该单例模仿的是nodejsasync模块,只抽取了parallelmap这两个api,今后可能会根据需求继续添加。该单例的目的是简化异步调用的代码书写。

cc.async.parallel

异步执行多个任务。在H5中多为HTTP请求。

参数:

nametyperemark
tasksArray必填,数组里的每一项都是一个function
optionObject/Function选填,该参数在nodejs的async模块中是没有的,这里作为拓展参数。当为方法时作为触发器使用,为Object的时候结构为:{cb:function, cbTarget:object/null, trigger:function, triggerTarget:object/null}
cbFunction选填,所有异步调用结束后的总回调函数

用法1:

cc.async.parallel([
    function(cb){
        cb(null, "a");//此处代替异步调用方法
    },
    function(cb){
        cb(null, "B");//此处代替异步调用方法
    }
], function(err, results){
    if(err) throw err;//error
    console.log(results);//["a", "B"]
});

用法2:

cc.async.parallel([
    function(cb){
        cb(null, "a");//此处代替异步调用方法
    },
    function(cb){
        cb(null, "B");//此处代替异步调用方法
    }
], function(item, count, totalNum){
    console.log(item, count, totalNum);
}, function(err, results){
    if(err) return console.error(err);
    console.log(results);//["a", "B"]
});

用法3:

var tempObj = {
    name : "TempObj",
    trigger : function(item, count, totalNum){
        console.log(this.name);//TempObj
        console.log(item, count, totalNum);
    },
    cb : function(err, results){
        if(err) return console.error(err);
        console.log(this.name);//TempObj
        console.log(results);//["a", "B"]
    }
};
var option = {
    trigger : tempObj.trigger,
    triggerTarget : tempObj,
    cb : tempObj.cb,
    cbTarget : tempObj
};
cc.async.parallel([
    function(cb){
        cb(null, "a");//此处代替异步调用方法
    },
    function(cb){
        cb(null, "B");//此处代替异步调用方法
    }
], option);

cc.async.map

参数:

nametyperemark
tasksArray/Object必填,数组里的每一项都是一个function
optionObject/Function必填,该参数与nodejs的async模块有所不同,这里作为拓展参数。当为方法时作为iterator使用,为Object的时候结构为:{cb:function, cbTarget:object/null, iterator:function, iteratorTarget:object/null}
cbFunction选填,所有异步调用结束后的总回调函数。当tasks为数组时,返回的results为数组,如果tasks是object,则返回的results也为一个object,并且每个key对应其返回结果。

用法1:

cc.async.map(["a", "B"], function(item, index, cb){
    console.log(this.name);//TempObj
    cb(null, index + ":" + item);//此处代替异步调用方法
}, function(err, results){
    if(err) return console.error(err);
    console.log(results);//[ '0:a', '1:B' ]
});

用法2:

cc.async.map({a:"a", b:"B"}, function(item, key, cb){
    cb(null, key + ":" + item);//此处代替异步调用方法
}, function(err, results){
    if(err) return console.error(err);
    console.log(results);//{ a: 'a:a', b: 'b:B' }
});

用法3:

var tempObj = {
    name : "TempObj",
    iterator : function(item, key, cb){
        cb(null, key + ":" + item);//此处代替异步调用方法
    },
    cb : function(err, results){
        if(err) return console.error(err);
        console.log(this.name);//TempObj
        console.log(results);//{ a: 'a:a', b: 'b:B' }
    }
};
var option = {
    iterator : tempObj.iterator,
    iteratorTarget : tempObj,
    cb : tempObj.cb,
    cbTarget : tempObj
};
转载自: cocos2dx开发网
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值