http://www.jianshu.com/p/0060...
这篇文章的代码这段
var fs = require('fs');
exports.get_search_data = function(key,start,end){
return function(cb){
var http = require('http');
var qs = require('querystring');
var data = {
key:key,
start:start,
end:end
};
/*请求MobAPI里的火车票查询接口*/
var content = qs.stringify(data);
var http_request = {
hostname:'apicloud.mob.com',
port:80,
path:'/train/tickets/queryByStationToStation?' + content,
method: 'GET'
};
var req = http.request(http_request,function(response){
var body = '';
response.setEncoding('utf-8');
response.on('data',function(chunk){
body += chunk;
});
response.on('end',function(){
cb(null,body);
});
});
req.end();
}
}
实现情况:代码下载后本地可以运行
问题1: this.body = yield service.get_search_data(key,start,end);
这段代码是完成html内容映射的作用。为什么返回一个函数也可以得到接口的内容阿?
问题2: cb(null,body);到底是什么东西
yield 是 generator 函数的语法,指延迟执行这段代码,等后面这个函数调用返回了结果,再执行后面的代码。通常配合 co 模块使用。
参考链接:
generator-MDN
co-ruanyifeng
cb(null, body) 是回调函数,通常 node 中的回调函数第一个参数是 err, 这里是没有错误的话传入 null。
建议最好了解一下 回调函数 的概念再去写 node 代码,特别是不要着急上 koa 框架。