Хочу предоставить вашему вниманию библиотеку Vow, которую написал мой коллега Дмитрий Филатов dfilatov.
Библиотека реализует Promises/A+, работает очень быстро и требует малого объема памяти. По тестам производительности сильно опережает 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'));
});