febs
Version:
febs is a useful utilities set
100 lines (91 loc) • 2.09 kB
JavaScript
;
/**
* Copyright (c) 2017 Copyright brainpoint All Rights Reserved.
* Author: lipengxiang
* Desc:
*/
var PromiseLib = Promise;
var utilsDate = require('./date');
/**
* @desc: 模拟sleep.
* @return: Promise.
* 在ms时间后执行.
* @e.g.
* febs.utils.sleep(1000).then(()=>{
//1000ms之后resolve.
});
*/
exports.sleep = function(ms) {
return new PromiseLib(function (resolve, reject) {
try {
setTimeout(function(){
resolve();
}, ms);
} catch(err) {
reject(err);
}
});
}
/**
* @desc: 合并多个map (浅拷贝).
* @return: {}
*/
exports.mergeMap = function()
{
var map0 = {};
var map2;
for (var i=0;i<arguments.length;i++){
map2=arguments[i];
if (map2)
{
for (var k in map2){
map0[k]=map2[k]
}
}
}
return map0;
};
/**
* @desc: 判断参数是否是null,undefined,NaN
* @return: boolean
*/
exports.isNull = function(e) {
return e === null || e === undefined || Number.isNaN(e);
}
/**
* date.
*/
exports.getTimeString = utilsDate.getTimeString;
exports.getTimeStringFromNow = utilsDate.getTimeStringFromNow;
exports.getDate = utilsDate.getDate;
exports.getDate2 = utilsDate.getDate2;
/**
* @desc: 创建promise,但函数中的this可以为指定值.
* 例如: yield denodeify(fs.exists)(path);
* @param self: 指定的对象.s
* @return: promise.
*/
exports.denodeify = function (fn, self, argumentCount) {
argumentCount = argumentCount || Infinity;
return function () {
var args = Array.prototype.slice.call(arguments, 0,
(argumentCount > 0 ? argumentCount : 0));
return new PromiseLib(function (resolve, reject) {
args.push(function (err, res) {
if (err) reject(err);
else resolve(res);
})
var res = fn.apply(self, args);
if (res &&
(
typeof res === 'object' ||
typeof res === 'function'
) &&
typeof res.then === 'function'
) {
resolve(res);
}
})
}
}
exports.promisify = exports.denodeify;