- PVSM.RU - https://www.pvsm.ru -
Хочу предоставить вашему вниманию библиотеку Vow, которую написал мой коллега Дмитрий Филатов dfilatov [1].
Библиотека реализует Promises/A+ [2], работает очень быстро и требует малого объема памяти. По тестам производительности сильно опережает Q, но при этом сохраняет асинхронную манеру работы.
Работа с Vow выглядит так же просто, как работа с Q. Из недостатков (по сравнению с Q) можно лишь выделить отсутствие progress.
Пример кода с использованием Vow:
function readFile(filename, encoding) {
var promise = Vow.promise();
fs.readFile(filename, encoding, function(err, data) {
if (err) return promise.reject(err);
promise.fulfill(data);
});
return promise;
}
Vow.all([readFile('test1.txt', 'utf8'), readFile('test2.txt', 'utf8')]).then(function(results) {
console.log(results.join('n'));
});
Бенчмарк, который отражает, насколько Q медленная библиотека (тестируется создание последовательных промисов):
время | операций в секунду | |
---|---|---|
Q | 54.891ms | 18 |
When | 3.484ms | 287 |
Vow | 1.158ms | 864 |
Также для Vow реализована библиотека работы с файловой системой: vow-fs: https://github.com/dfilatov/vow-fs [3].
NPM Пакет: vow
Репозиторий: https://github.com/dfilatov/jspromise [4]
Автор: mdevils
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/30461
Ссылки в тексте:
[1] dfilatov: http://habrahabr.ru/users/dfilatov/
[2] Promises/A+: https://github.com/promises-aplus/promises-spec
[3] https://github.com/dfilatov/vow-fs: https://github.com/dfilatov/vow-fs
[4] https://github.com/dfilatov/jspromise: https://github.com/dfilatov/jspromise
[5] Источник: http://habrahabr.ru/post/174339/
Нажмите здесь для печати.