鍍金池/ 問答/HTML/ 關于koa框架請求返回的問題

關于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();
    }
}

實現(xiàn)情況:代碼下載后本地可以運行
問題1: this.body = yield service.get_search_data(key,start,end);
這段代碼是完成html內容映射的作用。為什么返回一個函數(shù)也可以得到接口的內容阿?
問題2: cb(null,body);到底是什么東西

回答
編輯回答
櫻花霓

yield 是 generator 函數(shù)的語法,指延遲執(zhí)行這段代碼,等后面這個函數(shù)調用返回了結果,再執(zhí)行后面的代碼。通常配合 co 模塊使用。

參考鏈接:
generator-MDN
co-ruanyifeng

cb(null, body) 是回調函數(shù),通常 node 中的回調函數(shù)第一個參數(shù)是 err, 這里是沒有錯誤的話傳入 null。

建議最好了解一下 回調函數(shù) 的概念再去寫 node 代碼,特別是不要著急上 koa 框架。

2018年9月23日 22:18