异步模式在web编程中变得越来越重要,对于Javscript来说,异步编程要解决的问题有两个:一是必须通过回调函数进行返回值的处理
,另一个是复杂情况下会造成嵌套过深
。
目前,解决异步流程控制问题的主流方案有以下几种:
##1. 基于回调
适用于流程简单的情况,当出现过多回调的时候实现起来不是很利索,且容易使代码的可读性
和可维护性
下降。
var done = function(){
console.log("done");
#http cache
在调试问题时经常因为cache而导致一些问题被忽略,所以了解cache还是很有必要的
HTTP 1.0/1.1推出了Expires/Cache-Control两种策略,目前 HTTP1.0 已经很少见了,所有我们重点关注HTTP1.1的Cache-Control。
拿腾讯网为例,在浏览器输入 www.qq.com
,用fiddler抓包返回:
Cache-Control: max-age=60
Date: Mon, 20 Jan 2014 13:12:36 GMT
$.ajax({ | |
type: 'HEAD', | |
success: function(data, state, xhr){ | |
console.log(new Date(xhr.getResponseHeader('Date'))); | |
} | |
}); |
1:解决中文不同的问题 | |
function md5(str) { | |
str = (new Buffer(str)).toString("binary"); | |
var ret = crypto.createHash("md5").update(str).digest("hex"); | |
return ret; | |
} | |
2:正常字符串加密 |
echo "======" && git log --since=2016-01-01 --until=2016-06-30 --pretty=tformat: --numstat | awk '{ add += $1 ; subs += $2 } END { printf "added lines: %s\nremoved lines: %s\n",add,subs }' && git log --since=2016-01-01 --until=2016-06-30 --oneline|wc -l|awk '{print "commit counts: "$1}' && git ls-files | wc -l|awk '{print "file counts: "$1}' && find . -type f | perl -ne 'chomp;print "$_\n" if -T $_'|xargs wc -l 2>&1|tail -n1|awk '{print "line counts: "$1}' && echo "======" |
function number_cn(num, def) { | |
def = def || 0; | |
var output = []; | |
var UNIT_STR = ['', '十', '百', '千', '万']; | |
var NUMBER_STR = '零一二三四五六七八九十'; | |
num = Math.max(parseInt(num, 10) || def, def).toString().split(''); | |
while (num.length) { | |
var val = parseInt(num.shift(), 10); |
const stat = (data) => { | |
if (!Array.isArray(data) || data.length < 2) return data; | |
let r = [], max = 0, min = 0, m = {}, vmax = data[0], vmin = data[0]; | |
data.forEach(v => { | |
if (m[v]) return; | |
m[v] = true; | |
r.push(v); | |
if (v > vmax) { | |
vmax = v; | |
max = r.length - 1; |