关于koa框架请求返回的问题

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);到底是什么东西

阅读 3k
1 个回答

yield 是 generator 函数的语法,指延迟执行这段代码,等后面这个函数调用返回了结果,再执行后面的代码。通常配合 co 模块使用。

参考链接:
generator-MDN
co-ruanyifeng

cb(null, body) 是回调函数,通常 node 中的回调函数第一个参数是 err, 这里是没有错误的话传入 null。

建议最好了解一下 回调函数 的概念再去写 node 代码,特别是不要着急上 koa 框架。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题