text: var eventproxy = require('eventproxy')
  var superagent = require('superagent')
  var cheerio = require('cheerio')
  // url 模块是 Node.js 标准库里面的
  var url = require('url')
  
  var cnodeUrl = 'https://cnodejs.org/'
  
  superagent.get(cnodeUrl).end(function (err, res) {
      if (err) {
          return console.error(err)
      }
  
      var topicUrls = []
  
      var $ = cheerio.load(res.text)
      $('#topic_list .topic_title').each(function (idx, element){
          var $element = $(element)
          // url.resolve 来自动推断相对url变成完整 url
          var href = url.resolve(cnodeUrl, $element.attr('href'))
          topicUrls.push(href)
      })
      console.log(topicUrls)
  
      var ep = new eventproxy()
  
      ep.after('topic_html', topicUrls.length, function (topics){
          topics = topics.map(function (topicPair){
              var topicUrl = topicPair[0]
              var topicHtml = topicPair[1]
              var $ = cheerio.load(topicHtml)
              return ({
                  title: $('.topic_full_title').text().trim(),
                  href: topicUrl,
                  comment1: $('.reply_content').eq(0).text().trim()
              })
          })
          console.log('final:')
          console.log(topics)
      })
      
      topicUrls.forEach(function(topicUrl){
          superagent.get(topicUrl).end(function(err, res){
              console.log('fetch'+topicUrl+'successful')
              ep.emit('topic_html', [topicUrl, res.text])
          })
      })
  })