最近写了一些node的脚本,感觉回调函数就是一个大坑,简单的总结于此。
node 异步编程的最直接体现就是回调
同步和异步的区别:同步读取文件信息时会发生阻塞,异步不会。
1.读写文件的回调(异步)
var fs=require("fs") //引入fs模块 var fileName = “./haha” // 文件路径 //同步开始 var data = fs.readFileSync(fileName); console.log(data.toString) //将读出的文件转换成字符串 另一种转换成字符串的方法 var data = fs.readFileSync(fileName,{flag: 'r+', encoding: 'utf8'}) console.log(data) //异步开始 fs.readFile(__dirname + '/test.txt', {flag: 'r+', encoding: 'utf8'}, function (err, data) { if(err) { console.error(err); return; } console.log(data); });
2,函数中加入callback参数,进行回调
var a=0;
(1)最简单的一种的回调函数
function setNumber(cb) { var a=1; var b=a+1; cb(b) } function getNumber(data) { console.log(data) } setNumber(getNumber)
(2)在举个栗子
function findByStaId(staId,cb) { getMongosData({staId: staId},function (result) { //调用一个函数 if (!result[0]) { cb({status: false}) } cb({status: true, stationConfig: result[0]} }) } findByStaId(staId,function(result){ console.log(result) })