Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

JOptionPane.showMessageDialog(frame, е.message, "Exception",

JOptionPane.ERROR.MESSAGE);

}

});

// Использует java.net.URL и др. для загрузки содержимого URL и использует java.io.File

// и др. для сохранения этого содержимого в файле. Отображает ход выполнения загрузки

// в компоненте JProgressBar. Эта функция вызывается в новом потоке выполнения,

function download(url, file) {

try {

// Каждый раз, когда запускается загрузка очередного файла,

// необходимо добавить в окно новую строку для отображения URL,

// имени файла и индикатора хода выполнения операции

var row = Box.createHorizontalBox; // Создать строку

row.setBorder(padding); // Добавить отступы

var label = url.toString + ": ";// Отобразить URL

row.add(new JLabel(label)); // в компоненте JLabel

var bar = new JProgressBar(0, 100); // Создать полосу индикатора

bar.stringPainted = true; // Отобразить имя файла

bar.string = file.toString; // в полосе индикатора

row.add(bar);// Добавить индикатор в строку

col.add(row);// Добавить строку в колонку

frame.pack; // Изменить размер окна

// Здесь еще не известен размер загружаемого файла, поэтому изначально

// индикатор просто воспроизводит анимационный эффект

bar.indeterminate = true;

// Установить соединение с сервером и получить размер загружаемого

// файла, если это возможно

var conn = url.openConnection; // Получить java.net.URLConnection

conn.connect; // Подключиться и ждать заголовки

var len = conn.contentLength; // Проверить, получена ли длина файла

if (len) { // Если длина известна, тогда

bar.maximum = len; // настроить индикатор на вывод

bar.indeterminate = false; // процента выполнения задания

}

// Получить потоки ввода и вывода

var input = conn.inputStream; // Прочитать байты с сервера

var output = new FileOutputStream(file); // Записать в файл

// Создать входной буфер в виде массива размером 4 Кбайта

var buffer = java.lang.reflect.Array.newlnstance(java.lang.Byte.TYPE,4096);

var num;

while((num=input.read(buffer)) != -1) { // Читать до признака EOF

output.write(buffer, 0, num); // Записать байты в файл

bar.value += num; // Обновить индикатор

}

output.close; // Закрыть потоки по завершении

input.close;

}

catch(e) { // Если что-то пошло не так, вывести ошибку в индикаторе

if (bar) {

bar.indeterminate = false; // Остановить анимацию

bar.string = e.toString; // Заменить имя файла сообщением

}

}

}

12.2. Асинхронный ввод/вывод в интерпретаторе Node

Node - это быстрый интерпретатор JavaScript, написанный на языке C++, включающий средства доступа к низкоуровневым интерфейсам Unix для работы с процессами, файлами, сетевыми сокетами и так далее, а также к клиентским и серверным интерфейсам реализации протокола HTTP. За исключением нескольких синхронных методов, имеющих специальные имена, все остальные инструменты интерпретатора Node доступа к интерфейсам Unix являются асинхронными, и по умолчанию программы, выполняемые под управлением Node, никогда не блокируются, что обеспечивает им хорошую масштабируемость и позволяет эффективно справляться с высокой нагрузкой. Поскольку прикладные программные интерфейсы являются асинхронными, интерпретатор Node опирается на использование обработчиков событий, которые часто реализуются с использованием вложенных функций и замыканий. [26]

26

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

Этот раздел освещает некоторые наиболее важные инструменты и события, имеющиеся в составе Node, но это описание ни в коем случае нельзя считать полным. Полное описание Node можно найти в электронной документации по адресу http://nodejs.org/api/.

Как получить Node

Node - это свободное программное обеспечение, которое можно загрузить по адресуНа момент написания этих строк интерпретатор все еще активно разрабатывался и скомпилированные дистрибутивы не были доступны, однако вы можете собрать собственную копию интерпретатора из исходных текстов. Примеры в этом разделе опробовались под управлением версии Node 0.4. Прикладной интерфейс интерпретатора еще не зафиксирован, однако основные функции, демонстрируемые в этом разделе, едва ли сильно изменятся в будущем.

Поделиться:
Популярные книги

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Бояръ-Аниме. Газлайтер. Том 35

Володин Григорий Григорьевич
35. История Телепата
Фантастика:
аниме
боевая фантастика
фэнтези
5.00
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 35

Лекарь Империи 4

Карелин Сергей Витальевич
4. Лекарь Империи
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Лекарь Империи 4

На границе империй. Том 10. Часть 3

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 3

Вперед в прошлое 8

Ратманов Денис
8. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 8

Второгодка. Книга 5. Презренный металл

Ромов Дмитрий
5. Второгодка
Фантастика:
городское фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Второгодка. Книга 5. Презренный металл

Тринадцатый V

NikL
5. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый V

Идеальный мир для Лекаря 26

Сапфир Олег
26. Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 26

Адептка второго плана

Мамаева Надежда Николаевна
Попасть в историю
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Адептка второго плана

Двойник короля 17

Скабер Артемий
17. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 17

Кодекс Охотника. Книга XXVII

Винокуров Юрий
27. Кодекс Охотника
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга XXVII

Травник

Назимов Константин Геннадьевич
1. Травник
Фантастика:
фэнтези
5.00
рейтинг книги
Травник

Последний Паладин. Том 3

Саваровский Роман
3. Путь Паладина
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 3

Кодекс Охотника. Книга VII

Винокуров Юрий
7. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
4.75
рейтинг книги
Кодекс Охотника. Книга VII