描述
由于nodejs中的函数调用都是异步执行的,而笔者在工程开发中函数A需要四五个参数,而这四五个参数值都是通过函数调用获得,因此按顺序写代码时,执行到函数A时,往往函数A需要的参数值因为参数的异步调用关系,所需参数都还是undefined。
解决思路是保证函数A执行之前,函数A所需的四五个参数值都已经获得,可以通过async来实现代码的串行执行。
版本
nodejs: 6.9.5
async: 2.2.0
步骤
1、首先安装async
npm install async --save
2、写async串行化代码
笔者函数A所需的参数a,b,c,d,e都是通过函数调用获得,但是这五个函数调用都是独立的,之间不会相互影响,因此可以选择async中的 parrallel来实现,具体代码如下:
let async = require('async'); async.parallel({ paraA:function(done){ let paraA = invokeA();//参数paraA通过invokeA获得 done(null,paraA); }, paraB:function(done){ let paraB = invokeB(); done(null,paraB); }, paraC:function(done){ let paraC = invokeC(); done(null,paraC); }, paraD:function(done){ let paraD = invokeD(); done(null,paraD); }, paraE:function(done){ let paraE = invokeE(); done(null,paraE); } },function(error, result){ func(result.paraA,result.paraB,result.paraC,result.paraD,result.paraE);//函数func需要参数paraA,paraB...... })
使用async时,result汇总了串行阶段的所有返回值,并可以在串行代码执行完毕后使用。
注意:如果所需串行的代码相互之间形成前后依赖关系,那么可以使用async中的series,具体使用方法为将上例中的parallel改为series
2.forever让nodejs应用后台执行
nodejs一般是当成一条用户命令执行的,当用户断开客户连接,运用也就停了,很烦人。如何让nodejs应用当成服务,在后台执行呢?
最简单的办法:
$ nohup node app.js &
但是,forever能做更多的事情,比如分别记录输出和错误日志,比如可以在js中作为api使用。
$ sudo npm install forever -g #安装
$ forever start app.js #启动
$ forever stop app.js #关闭
$ forever start -l forever.log -o out.log -e err.log app.js #输出日志和错误
3.good-storage
4.better-scroll
细节1:利用computed计算新的数组并且传值,调用它的refresh()
2:利用watch观测有数据的时候,调用refresh()
query(newQuery){
if(!newQuery){
setTimeout(()=>{
this.$refs.shortcut.refresh()
},20)
}
}
3: show or hide也要让重新计算,所有重新调用refresh()
this.showFlag = true;
setTimeout(()=>{
this.$refs.listContent.refresh()
},20)
setTimeout(()=>{
if(this.currentIndex===0){
this.$refs.songList.refresh()
}else {
this.$refs.searchList.refresh()
}
},20)
4.vConsole 移动端
5.pm2
is a General Purpose Process Manager and a Production Runtime for Node.js apps with a built-in Load Balancer.
https://github.com/Unitech/pm2
发表评论: