Обновление 2017: я бы использовал функцию async, если среда поддерживает ее:
async function readFiles(files) {
for(const file of files) {
await readFile(file);
}
};
Если вы хотите, вы можете отложить чтение файлов до тех пор, пока они вам не понадобятся с помощью генератора асинхронных ваша среда поддерживает его):
async function* readFiles(files) {
for(const file of files) {
yield await readFile(file);
}
};
Обновление: во второй мысли я мог бы использовать цикл for вместо:
var readFiles = function(files) {
var p = Q(); // Promise.resolve() without Q
files.forEach(function(file){
p = p.then(function(){ return readFile(file); }); // or .bind
});
return p;
};
Или более компактно, с уменьшением:
var readFiles = function(files) {
return files.reduce(function(p, file) {
return p.then(function(){ return readFile(file); });
},Q()); // initial
};
В других библиотеках обещаний (например, когда и Bluebird) у вас есть утилиты для этого.
Например, Bluebird будет:
var Promise = require("bluebird");
var fs = Promise.promisifyAll(require("fs"));
var readAll = Promise.resolve(files).map(fs.readFileAsync,{concurrency: 1 });
// if the order matters, you can use Promise.each instead and omit concurrency param
readAll.then(function(allFileContents){
// do stuff to read files.
});
В Q у вас есть так же хорошо, как вы можете получить - вы можете немного сократить его с помощью Array.prototype.reduce
и извлечь его в общий метод.
Если вы можете использовать Q.async
(это вы на узле) все становится лучше:
Q.spawn(function* () {
var results = [];
for(var i = 0;i < files.length; i++){
results.push(yield readFile(files[i]));
}
console.log(results);
});
Просто не забудьте запустить узел с --harmony
и запомнить его экспериментальный atm.
Android не поддерживает OpenType (OTF), только TrueType (TTF), поэтому ваш шрифт Molot.otf
, вероятно, не будет работать. Я написал оба сообщения в блоге, на которые вы ссылаетесь во вступительном предложении (одно является пиратской копией другого), и они не используют Molot.otf
.
(Кстати, я несколько поправил форматирование этого поста - AndroidGuys постоянно меняет хосты WordPress, поэтому мои старые посты ужасно сломаны с точки зрения форматирования).
РЕДАКТИРОВАТЬ : Как указано в комментариях, Android DOES теперь поддерживает OTF.