所以在 流程上的控制比較無法像一般程式那麼直覺式的方式去執行
可以利用 callback 的方式,轉換成比較像是 一般程式 的執行方式去呼叫
var http = require('http');
var httpreq = {
get : function () {},
post : function (options, cb) {
var req = http.request(options, function (res) {
// console.log('STATUS: ' + res.statusCode);
// console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
// console.log('BODY: ' + chunk);
var str = chunk.substr(0, 50);
cb(str); // 執行傳進來的 function.
});
});
req.on('error', function (e) {
console.log('problem with request: ' + e.message);
});
// write data to request body
// console.log('write');
req.write('data\n');
// console.log('end');
req.end();
}
}
var options = {
hostname : 'www.google.com',
port : 80,
path : '/upload',
method : 'POST'
};
httpreq.post(options, function (d) {
console.log(d);
});
這種方法也可以在 JavaScript 使用,如下:
var httpreq = {
get : function () {},
post : function (options, cb) {
$.ajax( options )
.done(cb);
}
}
var options = {
url : 'echo.php',
method : 'POST'
};
httpreq.post(options, function (d) {
console.log(d);
});
參考連結:Continuation-Passing Style (CPS)
http://ithelp.ithome.com.tw/question/10119265?tag=ithome.nq
沒有留言:
張貼留言