扩展封装对象
http.request=(function(_request){ return function(options,callback){var req=_request(options,function(res){ }); req.on('timeout',function(){ req.end(); });return req; }; })(http.request);
调用一个函数 (function(){})() 参数为request
这个函数返回一个匿名函数
再这个匿名函数里 对request进行了修改和功能扩展
可以通过 http.request( {} ,func) 获取原对象
不晓得这样理解对不对!!
依赖异步返回值
PHP是同步的 依赖函数返回值很简单
function funcName() {
return ???; } function func2() { } func2( funcName() );
JavaScript 是异步的 不能按照以前是思维
function dataHandling(data, xx,xx,xx,.....) // 依赖于数据库查询结果 和 其他数据 { } function getData(callback) { db.query(sql,function(error,results,fields){ // 获取查询结果是异步的 callback(results); }) } getData(function(results){ dataHanding(results, xx,xx,xx,.....); });
循环遇见异步
// 同步时的做法 while{ db.query('INSERT INTO ....') // 因为是异步 此时并没有真正插入到数据库 } // 异步时做法 function insert() { db.query('INSERT INTO ....', function(){ insert(); // 确保真正插入数据库后 再次循环 }) }