一.同步与异步 1. Promise作用:解决异步回调的问题 二.Promise对象 目的:创建异步对象,当异步对象中的异步操作执行完之后,再执行想要执行的东西。 1. resolve 表示将状态变成成功完成,reject 表示将状态变成失败完成。 2. 当resolve方法执行完成之后,再执行then方法。
1 2 3 4 5 6 7 8 9 10 |
let p = new Promise((resolve,reject)=>{ setTimeout(()=>{ console.log('执行完毕!'); resolve(); //表示完成 },3000) }); p.then(()=>{ console.log('promise异步操作完成了'); }); |
三.Promise传参 resolve里的参数可以传给then
1 2 3 4 5 6 7 8 9 10 |
let p = new Promise((resolve,reject)=>{ setTimeout(()=>{ //console.log('脱完衣服'); resolve(3); },3000) }); p.then((d)=>{ console.log('去洗'+d+'件衣服'); }); -->打印去洗3件衣服 |
四.Promise错误处理 1. reject中存储错误处理的参数,可以传给then方法中的第二个参数
1 2 3 4 5 6 7 8 9 10 11 12 |
let p = new Promise((resolve,reject)=>{ setTimeout(()=>{ //resolve('读写成功'); reject('读写失败'); },2000) }); p.then((d)=>{ console.log('执行成功'); },(err)=>{ console.log(err); }); -->读写失败 |
五.Promise.all()-->一个脚本中有多个promise时,监控多个Promise对象执行完成 1.Promise.all([p1,p2,p3]):把promise打包,扔到一个数组里面,打包完还是一个promise对象.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
let p1 = new Promise((resolve,reject)=>{ let time = Math.random()*4000+1000; setTimeout(()=>{ console.log('p1完成'); resolve(); },time) }); let p2 = new Promise((resolve,reject)=>{ let time = Math.random()*4000+1000; setTimeout(()=>{ console.log('p2完成'); resolve(); },time) }); let p = Promise.all([p1,p2)]; p.then(()=>{ console.log(全部执行完毕); }) -->p1和p2全部执行完毕后,才会执行p.then方法里的操作 |
必须确保所有promise对象都是resolve状态 输出["aaaa","bbbb","cccc"] 六. 1.Promise对象的then方法有两个参数,一个是成功后的参数,另一个是失败的参数方法 promise.then(success,fail) 失败鸟 2.new Promise().catch()-->错误捕获 等同于上面的reject,返回“失败鸟” 也可这样使用 七.Promise的方法 1.Promise.resolve('xxx'):将现有的东西,转成一个Promise对象,且是resolve成功状态 输出aaa 等价于下面这句话 2.Promise.reject('xxx'):将现有的东西,转成一个Promise对象,且是reject失败状态 输出aaaa 4.Promise.race():与all的不同之处在于,只要有一个是resolve状态就可以返回 输出aaaa 八. 作者:祝名 链接:https://www.jianshu.com/p/7b1dd9c50d2b 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
View Details今天在一个原来使用AJAX自动缩小选择内容的项目上突然发现当输入名称时,如果输入有特殊字符&的时候,选择的内容不会发生变化,也就是说输入的内容在&后面的内容会被截断,经过查证才发现在客户端使用AJAX发送获取到客户端数据的时候,数据内容是没有经过url编码的就是直接放在url地址上发送了,因为当时考虑到输入的是公司名称,一般不会有特殊字符,也没认真考虑,使用当输入特殊字符&的时候后面的内容就会被截断。解决办法是对要发送的内容进行url编码,可以使用如下javascript函数: escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的作用各不相同。 escape() 方法: 采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。 不会被此方法编码的字符: @ * / + encodeURI() 方法: 把URI字符串采用UTF-8编码格式转化成escape格式的字符串。 不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + ' encodeURIComponent() 方法: 把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。 不会被此方法编码的字符:! * ( ) ' 因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用 escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者 encodeURIComponent。 另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/nich262/archive/2008/11/03/3208573.aspx from:https://www.cnblogs.com/seasons1987/p/3357775.html
View Details造成500错误常见原因有:ASP语法出错、ACCESS数据库连接语句出错、文件引用与包含路径出错、使用了服务器不支持的组件如FSO等。 另外,对于win2008的IIS默认不显示详细出错信息的问题以下就是重点部分了,2008默认它是不会显示详细错误的。 1.打开IIS,点全局设置中的"错误页"(注意必须是全局网站!) 2.右击500错误这一行,单击 “编辑功能设置”. 2.在错误响应中,选第二项的"详细错误" 3.点确定后刷新IE就会显示详细的出错信息. 值得注意的地方:这样设置了,就不能给500内部错误自定义错误页面了。 from:https://blog.csdn.net/lishimin1012/article/details/72956068
View Details用户名和邮箱的作用: 用户名和邮箱地址相当于你的身份标识,是本地Git客户端的一个变量,不会随着Git库而改变。 每次commit都会用用户名和邮箱纪录。 github的contributions跟你的邮箱是有关联的。 查看自己的用户名和邮箱地址: $ git config user.name $ git config user.email 修改自己的用户名和邮箱地址: $ git config --global user.name "xxx" $ git config --global user.email "xxx" from:https://www.cnblogs.com/lxwphp/p/10619618.html
View Details查看php-fpm端口是否在被php-fpm使用
1 |
sudo lsof -i:9000 |
一般修改 php.ini 文件后经常需要重启php-fpm
1 |
sudo killall php-fpm // 关闭 |
再输入 sudo lsof -i:9000 就会发现php-fpm没有打印对应端口
1 |
sudo php-fpm // 重启 |
from:https://www.cnblogs.com/cap-rq/p/11460282.html
View Detailshomebrew主要分两部分:git repo(位于GitHub)和二进制bottle(位于binary),这两者在国内访问不太顺畅。其实可以替换成国内的镜像,git repo国内镜像就比较多了,可以自行查找,如:中科大镜像… 替换homebrew默认源 替换brew.git: cd "$(brew --repo)" git remote set-url origin https://mirrors.ustc.edu.cn/brew.git 替换homebrew-core.git: cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core" git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git 如果替换源之后brew update 没反应 cd "$(brew --repo)" git pull origin master 切回官方源 重置brew.git: cd "$(brew --repo)" git remote set-url origin https://github.com/Homebrew/brew.git 重置homebrew-core.git: cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core" git remote set-url origin https://github.com/Homebrew/homebrew-core.g 注释掉bash配置文件里的有关Homebrew Bottles即可恢复官方源。 重启bash或让bash重读配置文件。 替换Homebrew Bottles源 Homebrew Bottles是Homebrew提供的二进制代码包,目前镜像站收录了以下仓库: 对于bash用户 echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.bash_profile source ~/.bash_profile 对于zsh用户 echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc source ~/.zshrc from:https://blog.csdn.net/zhazhaji/article/details/80957811
View Details
1 2 3 4 5 6 7 8 9 10 11 |
location /download { include /usr/local/nginx/html/Nginx-Fancyindex-Theme/fancyindex.conf; # 目录美化配置 root /home/map/www/; #指定目录所在路径 autoindex on; #开启目录浏览 autoindex_format html; #以html风格将目录展示在浏览器中 autoindex_exact_size off; #切换为 off 后,以可读的方式显示文件大小,单位为 KB、MB 或者 GB autoindex_localtime on; #以服务器的文件时间作为显示的时间 charset utf-8,gbk; #展示中文文件名 } |
View Details
在开发中经常会遇到端口占用问题,例如下面,npm start 报的错误: 1. 查看端口占用情况命令
1 |
lsof -i tcp:8080 |
输出结果: 字段说明: 字段名 说明 COMMAND 进程名称 PID 进程标识符 USER 进程所有者 FD 文件描述符,应用程序通过文件描述符识别该文件 TYPE 文件类型,文件 REG、目录 DIR、字符 CHR、块设备 BLK、UNIX域套接字 UNIX、先进先出队列 FIFO、IP套接字 IPv4 DEVICE 指定磁盘的名称 SIZE/OFF 文件的大小 NODE 索引节点(文件在磁盘上的标识) NAME 打开文件的确切名称 2. lsof 命令介绍 lsof(list open files)是一个列出当前系统打开文件的工具,在linux环境下,任何事物都以文件的形式存在。通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议(TCP)、用户数据报协议(UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符。 无论这个文件的本质如何,该文件描述符(FD)为应用程序与基础操作系统之间的交互提供了通用接口,因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof能够查看这个列表对系统监测以及排错很有帮助。 3. 杀死进程 通过 lsof 命令我们得到占用进程的应用程序对应的 pid,然后就是如何杀死进程:
1 |
kill 11649 |
from:https://blog.csdn.net/zwkkkk1/article/details/88797044
View Detailsprompt解析 在osx系统下,对系统自带的终端进行配色可以通过设置PS1环境变量来实现的 在osx系统下prompt的表示成
1 |
[\u@\h: ] \w \$ |
示例:
1 |
[elmman@192: ] ~ $ |
解析: [ ]这个方括号是自己加的无意义符号 \u表示用户(这里是elmman) @表示@(这里是@) \h表示host(这里是192) :也是个无意义符号(这里是:) \w表示当前目录(这里是~,即家目录) \$表示命令提示符(这里是\$) PS1的配色规则(即在shell当中颜色的表示码) 默认 : \e[00m 黑色 : \e[01;30m 红色 : \e[01;31m 绿色 : \e[01;32m 黄色 : \e[01;33m 蓝色 : \e[01;34m 洋红 : \e[01;35m 青色 : \e[01;36m 白色 : \e[01;37m 开始配色 首先,先为终端选择一款主题(这里选择homebrew的)。步骤如下 打开终端->Terminal->Preferences…(或者command + , )。也就是俗称的偏好设置 在这里的第一个下拉框选择homebrew主题,然后直接退出,且重启终端,这时候可以看到终端变成黑色背景、绿色字体的主题。(这才刚开,还没结束) 接下来就是配色了。 首先呢,举个例子。我想把prompt改成上面示例的样子
1 |
192: elmman ~ $ vim ~/.bash_profile |
在.bash_profile文件最后添加如下代码
1 |
export PS1='[\u@\h: ] \w \$ ' |
然后重启终端,这时候你就可以看到终端变成下面这个样子了
1 |
[elmman@192: ] ~ $ |
接着,我想把elmman用户名变成红色怎么做?很简单,就在\u前面加上[\e[01;31m]和\u后面加上[\e[00m]行了。 注:这里需要特别注意到是颜色码必须前后加上[]包围起来, 不然终端可能会出现无法自动换行、或者tab键自动补全失效的情况
1 |
[elmman@192: ] ~ $ vim ~/.bash_profile |
在.bash_profile文件修改PS1变量代码
1 |
export PS1='[\[\e[01;31m\]\u\[\e[00m\]@\h: ] \w \$ ' |
还是重启终端,这是就可以看到 总结下:也就是想给哪个字段配色就只需要在其前面加上shell颜色码即可,当然还得在字段后面带上\e[00m表示后面的字段还是使用默认。不然就会变成什么样?自己可以去试试。 最后以下是本人自己的配色方案,(这里多了两个参数CLICOLOR和LSCOLORS)。 CLICOLOR=1表示开启命令行颜色设置。 LSCOLORS=gxfxcxdxbxegedabagacad这个参数是对ls命令展示的内容进行配色,google下就有很多关于这个环境变量的解释,这里不在赘述。
1 2 3 |
export CLICOLOR=1 export LSCOLORS=gxfxcxdxbxegedabagacad export PS1='\[\e[01;33m\][\[\e[01;32m\]\u\[\e[01;33m\]@\[\e[01;35m\]\h:\[\e[01;33m\]] \[\e[01;36m\]\w \[\e[01;32m\]\$ ' |
效果图 vim语法高亮 vim语法高亮就比较简单了,只需要为vim开启语法高亮功能,再选择一款好看一点的主题就行来 首先开启语法高亮功能
1 |
[elmman@192:] ~ $ vim ~/.vimrc |
在.vimrc文件末尾添加如下代码
1 |
syntax on |
然后随便打开一个php(或其他语言的代码文件),就可以看到 选择主题 […]
View Details