2015-07-26 2 views
0

я не знаю, как правильно задать свой вопрос, но, например, у меня есть некоторые структуры, как этотобратные вызовы оптимизации в MeteorJS

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 
      })); 
     } 
     }); 
    } 
    })) 
} 

Основная идея в том, что я получаю данные из многих сайтах, как агрегатор и имеют много методы, подобные этому. И это очень много времени. Итак, у меня есть 2 вопроса

1 - для парней Метеор. Когда я использую this.unblock(), это гарантирует, что мой метод будет работать, не задерживаясь с клиентами, как работа в другом потоке?

2 - Как я могу оптимизировать структуру кода, как указано выше?

Извините, если это не в формате StackOverflow, но Я жду никакой помощи!

ответ

0
  1. this.unblock относится только к каждому клиенту индивидуально. Он допускает последующие вызовы методов от клиента A для запуска без с предыдущим вызовом метода от этого клиента A для завершения. Это как работа в новом потоке асинхронно в том смысле, что предыдущие вызовы метода не блокируют для клиента A для этого функция с использованием this.unblock. Если у вас есть клиент B, его/ее вызов не будет блокировать A вне зависимости от того, используете ли вы this.unblock.
  2. Я рекомендую использовать this.unblock всякий раз, когда вы уверены, что последующие вызовы методов не будут полагаться на результат функции, которую вы используете this.unblock дюйма. Отправка сообщений электронной почты является наиболее распространенным примером. Последующие вызовы метода не будут нуждаться в письмах, чтобы закончить отправку, прежде чем выполнять свою работу. Для вашего примера, я думаю, должно быть хорошо использовать this.unblock, но, конечно, это зависит от того, что вы планируете делать с результатами после выполнения кода после this.unblock.
+0

Много нового, здорово! Эй, может быть, мы можем поговорить в чате о метеоре, потому что у меня есть вопросы, но я не могу найти ответы, что вы думаете? –