import * as _ from 'lodash'
import * as _async from 'async'
import * as _moment from 'moment'
import * as _md5 from 'md5'
var log = console.log
const {ccclass, property} = cc._decorator;
@ccclass
export default class NewClass extends cc.Component {
onLoad() {
log(_.random(1, 5))
log(_moment().format('MMMM Do YYYY, h:mm:ss a'))
log(_md5('admin'))
log(_moment("20111031", "YYYYMMDD").fromNow()); // 7 年前
log(_moment("20120620", "YYYYMMDD").fromNow()); // 7 年前
log(_moment().startOf('day').fromNow()); // 18 小时前
log(_moment().endOf('day').fromNow()); // 6 小时内
log(_moment().startOf('hour').fromNow()); // 1 小时前
// N次循环
_.times(5,function(a){
console.log(a);
});
// 深层查找属性值
let ownerArr = [{
"owner": "Colin",
"pets": [{"name": "dog1"}, {"name": "dog2"}]
}, {
"owner": "John",
"pets": [{"name": "dog3"}, {"name": "dog4"}]
}];
let lodashMap = _.map(ownerArr, 'pets[0].name');
console.log('------- lodashMap -------');
console.log(lodashMap);
// 深克隆对象
let objA = {
"name": "戈德斯文"
};
let objB = _.cloneDeep(objA);
console.log(objA);
console.log(objB);
console.log(objA === objB);
// 从列表中随机的选择列表项
let smartTeam = ["戈德斯文", "杨海月", "柴硕", "师贝贝"];
console.log(_.sample(smartTeam));
console.log(_.sampleSize(smartTeam,2));
// 判断对象中是否含有某元素
let smartPerson = {
'name': '戈德斯文',
'gender': 'male'
}
console.log(_.includes(smartPerson, '戈德斯文'));
console.log(_.includes(smartTeam, '杨海月'));
console.log(_.includes(smartTeam, '杨海月',2));
// 遍历循环
_.forEach([1, 3] , function(value, key) {
console.log(key,value);
});
// this.shunXuAsync()
// this.bingXingAsync()
// this.puBuAsync()
}
shunXuAsync(){
// 异步 顺序执行
let task1 = function (callback) {
console.log("task1");
callback(null, "task1")
}
let task2 = function (callback) {
console.log("task2");
callback(null, "task2")
// callback("err","task2") // null改为err ,如果中途发生错误,则将错误传递到回调函数,并停止执行后面的函数
}
let task3 = function (callback) {
console.log("task3");
callback(null, "task3")
}
_async.series([task1, task2, task3], function (err, result) {
console.log("series");
if (err) {
console.log(err);
}
console.log(result);
}
)
}
bingXingAsync(){
// 异步 并行执行
let task1 =function(callback){
console.log("task1");
setTimeout(function(){
callback(null,"task1")
},5000);
}
let task2 =function(callback){
console.log("task2");
setTimeout(function(){
callback(null,"task2")
},1000);
}
let task3 =function(callback){
console.log("task3");
setTimeout(function(){
callback(null,"task3")
},3000);
}
console.time("parallel方法");
_async.parallel([task1,task2,task3],function(err,result){
console.log("parallel");
if (err) {
console.log(err);
}
console.log(result);
console.timeEnd("parallel方法");
})
}
puBuAsync(){
// 瀑布流, 依次执行,前一个函数的输出为后一个函数的输入
let task1 =function(callback){
console.log("task1");
callback(null,"11")
}
let task2 =function(q,callback){
console.log("task2");
console.log("task1函数传入的值: "+q);
callback(null,"22")
}
let task3 =function(q,callback){
console.log("task3");
console.log("task2函数传入的值: "+q);
callback(null,"33")
}
console.time("waterfall方法");
_async.waterfall([task1,task2,task3],function(err,result){
console.log("waterfall");
if (err) {
console.log(err);
}
console.log("result : "+result);
console.timeEnd("waterfall方法");
})
}
limitBingFaAsync(){
// 和parallel类似,只是limit参数限制了同时并发执行的个数,不再是无限并发
let task1 =function(callback){
console.log("task1");
setTimeout(function(){
callback(null,"task1")
},5000);
}
let task2 =function(callback){
console.log("task2");
setTimeout(function(){
callback(null,"task2")
},3000);
}
let task3 =function(callback){
console.log("task3");
setTimeout(function(){
callback(null,"task3")
},4000);
}
console.time("parallelLimit方法");
_async.parallelLimit([task1,task2,task3], 2, function(err,result){
console.log("parallelLimit");
if (err) {
console.log(err);
}
console.log(result);
console.timeEnd("parallelLimit方法");
})
}
// update (dt) {}
}
js中第三方库lodash和async及moment的使用
最新推荐文章于 2024-09-11 22:14:07 发布