Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Anyevent::HTTP колбэк 
:(
    Опции темы
Junker
Дата 15.11.2010, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 15.11.2010

Репутация: нет
Всего: нет



Пытаюсь заюзать AnyEvent::HTTP но уперся в один момент. Есть код:


Код

use AnyEvent::HTTP;

for $id(1..10){
    http_get "http://www.myhost.ru/?id=$id", sub { print "ID:???\n" };
}


каким образом мне можно передать собственные параметры в колбэк? т.е. в данном примере я хочу вывести ID запроса который обработался. Т.к. запросы идут во много потоков, то просто взять внешнюю переменную не получиться..

есть идеи?
PM MAIL   Вверх
JackYF
Дата 15.11.2010, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: нет
Всего: 162



Первое, что пришло в голову, попробуй
Код

use AnyEvent::HTTP;
for $id(1..10){
    my $inner_id = $id;
    http_get "http://www.myhost.ru/?id=$id", sub { print "ID:$inner_id\n" };
}



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Junker
Дата 15.11.2010, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 15.11.2010

Репутация: нет
Всего: нет



Цитата(JackYF @ 15.11.2010,  21:13)
Первое, что пришло в голову, попробуй
Код

use AnyEvent::HTTP;
for $id(1..10){
    my $inner_id = $id;
    http_get "http://www.myhost.ru/?id=$id", sub { print "ID:$inner_id\n" };
}

Такой вариант неподходит. т.к. на момент вызова колбэка, $inner_id будет уже другим.
PM MAIL   Вверх
DurRandir
Дата 16.11.2010, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 335
Регистрация: 27.9.2009

Репутация: 14
Всего: 17



Оберни всё это в замыкание:
Код


for my $id (1..10){
    my_http_get(id = >$id);
}

sub my_http_get{
  my %params = @_;

  http_get "http://www.myhost.ru/?id=$params{id}", sub { 
    print "ID: $params{id}\n";
  };
}



Это сообщение отредактировал(а) DurRandir - 16.11.2010, 13:03
PM   Вверх
tishaishii
Дата 20.11.2010, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: 4
Всего: 8



Код
($,, $\)=("\t", "\n");

sub get_http(&$$) {
    my($fn, $from, $to, $i)=(shift, shift, shift);
    +$to>$from ? ($to-$from , sub() {
        +$from>$to ? () : ($i++, &http_get('http://tatata.tata?id='.$from, sub(@) {$fn->($from++, @_)}))
    }) : ()
}

if(my($rows, $h)=get_http{print @_}10=>110) {
    while(my($i, $row)=$h->()) {
        undef
    }
}


Это сообщение отредактировал(а) tishaishii - 20.11.2010, 12:09
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.