MeteorJS中的优化回调

时间:2015-07-26 22:14:10

标签: node.js meteor

我不知道如何正确地提出我的问题,但是例如我有一些像这样的结构

get_data:function(){
    this.unblock();
    request("example.com", Meteor.bindEnvironment(function(error, response, body) {
      if (!error && response.statusCode == 200) {
        $ = Cheerio.load(body);// get HTML of example.com
        $(".someclass").each(function() {
          if (!somedata_doesnt_exist_in_Mongo) {
           request(nexturl, Meteor.bindEnvironment(function(error, response, body)
           //... logic
          }));
        }
      });
    }
  }))
}

主要思想是我从许多网站获取数据,例如agregator,并且有很多像这样的方法。而且很多时候。所以我有两个问题

1 - 对于流星家伙。当我使用this.unblock()时,这可以确保我的方法在不花时间与客户合作的情况下工作,就像在其他线程中工作一样?

2 - 我如何优化上面的代码结构?

很抱歉,如果它不是StackOverflow格式,但是 我在等待任何帮助!

1 个答案:

答案 0 :(得分:0)

  1. this.unblock仅与每个客户相关。它 允许来自客户端 A 的后续方法调用无需运行 使用上一个方法从该客户端 A 调用完成。 就像在某个意义上的异步工作一样 以前的方法调用不会阻止客户端 A 函数使用this.unblock。如果您有客户 B ,他/她 无论是否,方法调用都不会阻止 A 你使用this.unblock
  2. 我建议您在确定后续方法调用不依赖于您使用this.unblock函数的结果时使用this.unblock。发送电子邮件是最常见的示例。后续方法调用在完成工作之前不需要电子邮件完成发送。对于您的示例,我认为使用this.unblock应该是好的,但当然这取决于您计划在this.unblock之后执行代码后对结果执行的操作