node.js - koa 获取eventproxy中异步的值,返回给前端?

 刘洁05_836 发布于 2022-10-31 08:22
  var _ = require('lodash');
  
  var redis = require("redis");
  
  var cheerio = require('cheerio');
  
  var router = require('koa-router')();
  
  var superagent = require('superagent');
  
  let eventproxy = require('eventproxy');
  
  
  var ep = new eventproxy();
  
  let rets = []
  var client = redis.createClient();
  
  client.on("error", function (err) {
      console.log("Error " + err);
  });
      
  
  router.get('/', async function (ctx, next) {
      let keys = JSON.parse(ctx.query.key).split(',').reverse()
      
      let kVals = [];
      
      keys.forEach(key=>{
          let url = encodeURI(`http://news.baidu.com/ns?cl=2&rn=20&tn=news&word=${key}`)
          superagent.get(url)
                  .end((err,res)=>{
                      console.log(`fetch------${key}------successful-----`)
                      let $  = cheerio.load(res.text)
                      let datas = Array.from($(".result")).splice(0,5)
                      for (var i = datas.length - 1; i >= 0; i--) {
                          let data = {
                              title:$(datas[i]).find('.c-title').text(),    
                              author:$(datas[i]).find('.c-author').text(),
                              summary:$(datas[i]).find('.c-summary').text()
                          }
                          kVals.unshift(data)
                      }
                      ep.emit('news',kVals)
                  })
      })
  
      ep.after('news',keys.length,rets=>{
          rets = rets.map(ret=>{
              return(ret)
          })    
      })
  
  
      ctx.state = {
          title: '数据搜索结果页',
          ret:ret//如何获取异步的信息?
      };
      await ctx.render('results');
  })
  module.exports = router;
1 个回答
  • 这个使用异步流程控制库 async 就可以了

    async.map(['file1','file2','file3'], fs.stat, function(err, results) {
        // results is now an array of stats for each file
    });
    2022-10-31 22:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有