Я новичок в обещаниях и использовании реализации rsvp.Как читать несколько файлов асинхронно с обещаниями, затем продолжить
Я хочу асинхронно читать список файлов, а затем перейти к другой задаче только тогда, когда все файлы были прочитаны.
Я дошел до основной структуры, чтобы прочитать один файл, и цепь к следующей задаче:
var loadFile = function (path) {
return new rsvp.Promise(function (resolve, reject) {
fs.readFile (path, 'utf8', function (error, data) {
if (error) {
reject(error);
}
resolve(data);
});
});
};
loadFile('src/index.txt').then(function (data) {
console.log(data);
return nextTask(data);
}).then(function (output) {
//do something with output
}).catch(function (error) {
console.log(error);
});
Я хочу сделать что-то вроде этого:
loadFile(['src/index.txt', 'src/extra.txt', 'src/another.txt']).then(...
Я вы видели arrays of promises и hash of promises в документах, но я не знаю, что наиболее важно, или как их использовать. Мне нужен пример их использования в контексте моей проблемы выше, чтобы понять их.
Перед загрузкой файлов у меня есть несвязанная предыдущая задача, которая возвращает другое обещание. Как бы я мог привязать RSVP.all() к ожиданию этой зависимой задачи? – mtmacdonald
Просто вызовите RSVP.all() в обратном вызове решения предыдущей задачи. – bardzusny
Я не мог заставить версию объекта работать: [Ошибка: в методах массива должен быть предоставлен массив]. Неважно, для чего нужен RSVP.hash. – mtmacdonald