Я начинаю расстраиваться из-за части Йомен-генератора, которую я строю. Поскольку это мой первый, я не сомневаюсь, что упускаю что-то очевидное, но вот оно.
Проще говоря, я пытаюсь зарегистрировать сообщение, выполнить действия™, а затем зарегистрировать другое сообщение только после того, как эти действия будут выполнены.
Вот метод:
repos: function () {
var self = this;
this.log(highlightColour('Pulling down the repositories'));
// Skeleton
this.remote('user', 'skeleton', 'master', function(err, remote) {
if (!err) {
remote.bulkDirectory('.', self.destinationRoot());
} else {
self.log('\n');
self.log(alertColour('Failed to pull down Skeleton'));
repoErr = true;
}
});
//
// Three more near identical remote() tasks
//
if (!repoErr) {
self.log(successColour('Success!'));
self.log('\n');
} else {
self.log(alertColour('One or more repositories failed to download!'));
}
},
Каждая из отдельных задач remote() работает нормально, но я получаю как первое, так и последнее сообщение self.log() до копирования файла. Это кажется тривиальным, но я просто хочу, чтобы сообщение об успехе пришло после того, что все было завершено.
Например, в терминале я вижу:
Вытягивание репозиториев
Успех!
результаты копирования файлов
Так должно быть:
Вытягивание репозиториев
результаты копирования файлов
Успех!
Я подумал, что это может быть как-то связано с использованием this.async() с done() в конце каждой задачи remote(), и я попробовал это, но всякий раз, когда я это делаю, ни один из кодов не срабатывает вообще.
Я даже пытался разбить все (включая сообщения) на отдельные методы, но все равно не повезло.
Такая простая цель, но у меня нет идей! Буду признателен за вашу помощь!
РЕДАКТИРОВАТЬ: Если вам интересно, я знаю, что сообщения приходят первыми, потому что любые предупреждения о конфликтах файлов приходят после сообщений :)