| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Применение библиотек > JsHttpRequest, return инфы вызывающей функции |
| Автор: Alx 29.3.2007, 15:44 | ||
subj. как быть, если необходимо присваивать переменным результаты выполнения этой функции? что-то плохо соображаю.. ) заранее спасибо! |
| Автор: AKS 30.3.2007, 07:20 | ||||
Все закономерно - функция ведь ничего не возвращает.
А какой результат может быть у этой функции? Она лишь отправляет запрос, а когда будет получен ответ, и вообще будет ли он получен, эта функция не знает... |
| Автор: Sardar 30.3.2007, 21:46 |
| Тут логика немного другая. JsHttpRequest отправляет асинхронные запросы, т.е. getHTML() возвращаеться сразу, не блокируя текущий тред. И это правильно, подвешивать всё ожидая ответа глупо. Вместо return (req.responseJS.q||'undefined'); вызывай какую-нибудь свою функцию, что получить и отрабоает инфу (обновит графики и т.п.). Блокирующее IO - зло. |
| Автор: Sardar 1.4.2007, 15:55 | ||||
|
| Автор: Alx 1.4.2007, 17:38 |
| какой-то код мне вообще не понятный.. чувствую себя ламером.. возвращает ошибку "исключение брошено и не поймано".. что это вообще значит? функцию bind() вообще не понял.. можешь объяснить? прямо построчно.. пасиб... |
| Автор: Sardar 1.4.2007, 17:49 | ||
Ага, это я когда на коленке пишу, не проверяя, бывает
bind просто создаёт closure, который вызывает конкретный метод объекта. Если он не сушествует, то кидаем исключение. |
| Автор: Alx 2.4.2007, 03:03 | ||||
вот эти выражения мне вообще неизвестны... пипец.. ну лана, посмарю в доках, объясни плиз хотябы тогда: 1)зачем внутри функции ещё одна функция, если кроме неё ничего нет? 2)какую роль играет return? 3)и ещё мне непонятно, какие же параметры приходят функции bind(), если тут
1 параметр - ссылка на объект, второй - строка, а тут
снова первый параметр строка... 4) как это блин все работает? 5) что конкретно, какой тип данных содержится в переменной handler?.. оооох... мне стыдно... так хочется все это понять.. сейчас только понимаю, насколько реально я отстал от жизни.. |
| Автор: Sardar 2.4.2007, 11:00 | ||
Это closure, вбей это слово в поиск в основном разделе. В кратце, JS поддерживает функции высшего порядка, т.е. функция это объект и как любой другой объект её можно вернуть или записать в переменную. Именно объект а не строка с именем, как это было в PHP. При определении функции мы "запоминаем" все переменные, что были видны на момент определения, в нашем случае нам интересны аргументы внешней функции. Функция bind возвращает closure (функцию), что продолжает видеть оригинальные значения obj и method, и соответственно может при её вызове. Он возвращает функцию, как и любое другое значение. Что бы было ясно:
3) - на это ты уже сам можешь ответить, читай предыдущий абзац 5) - функция Я и Zeroglif много размышляли на эту тему. Вбей в поиск closure, instanceof, prototype this. |
| Автор: Alx 3.4.2007, 23:21 |
вот этого-то я и не понимаю! зачем такой дикий изврат из 3-х функций, если можно просто вызвать одну??? |
| Автор: Sardar 4.4.2007, 19:13 | ||
Потому что это не фича вызывать методы объектов, это вообще замыкание любого кода. Замкнутый код можно затем вызвать, он будет "видеть" окружение (переменные) существовавшее на момент создания замыкания. Естественно от одного замкнутого участка кода можно получить сколь угодно конкретных замыканий (пары {окружение, код}). Когда-нибудь ты врубишся в фишку, затем поудивляешся как ты мог программить без них |
| Автор: Alx 5.4.2007, 20:48 | ||
мда, можеть быть |