第9道题目,异步多条请求
答案
function httpGet (index) { http.get(process.argv[2 + index], function (response) { response.pipe(bl(function (err, data) { if (err) { return console.error(err) } results[index] = data.toString() count++ if (count === 3) { printResults() } })) }) } for (var i = 0; i < 3; i++) { httpGet(i) }
第10题 日期的使用 答案
function zeroFill (i) { return (i < 10 ? '0' : '') + i } function now () { var d = new Date() return d.getFullYear() + '-' + zeroFill(d.getMonth() + 1) + '-' + zeroFill(d.getDate()) + ' ' + zeroFill(d.getHours()) + ':' + zeroFill(d.getMinutes()) } var server = net.createServer(function (socket) { socket.end(now() + '\n') }) server.listen(Number(process.argv[2]))
第11题 考察流的用法
通过这篇文章大概了解了下 https://blog.csdn.net/foruok/article/details/49120183
require('http').createServer(function (req, res) { res.writeHead(200, 'content-type: text/plain') require('fs').createReadStream(process.argv[3]).pipe(res) }).listen(process.argv[2] | 0)
第12题
var http = require('http') var map = require('through2-map') var server = http.createServer(function (req, res) { if (req.method !== 'POST') { return res.end('send me a POST\n') } req.pipe(map(function (chunk) { return chunk.toString().toUpperCase() })).pipe(res) }) server.listen(Number(process.argv[2]))
最后一个题目
var http = require('http') var url = require('url') function parsetime (time) { return { hour: time.getHours(), minute: time.getMinutes(), second: time.getSeconds() } } function unixtime (time) { return { unixtime: time.getTime() } } var server = http.createServer(function (req, res) { var parsedUrl = url.parse(req.url, true) var time = new Date(parsedUrl.query.iso) var result if (/^\/api\/parsetime/.test(req.url)) { result = parsetime(time) } else if (/^\/api\/unixtime/.test(req.url)) { result = unixtime(time) } if (result) { res.writeHead(200, { 'Content-Type': 'application/json' }) res.end(JSON.stringify(result)) } else { res.writeHead(404) res.end() } }) server.listen(Number(process.argv[2]))