Еще один подход к возврату значения из асинхронной функции - передать объект, который сохранит результат от асинхронной функции.
Вот пример того же:
var async = require("async");
// This wires up result back to the caller
var result = {};
var asyncTasks = [];
asyncTasks.push(function(_callback){
// some asynchronous operation
$.ajax({
url: '...',
success: function(response) {
result.response = response;
_callback();
}
});
});
async.parallel(asyncTasks, function(){
// result is available after performing asynchronous operation
console.log(result)
console.log('Done');
});
Я использую объект result
для хранения значения во время асинхронной операции. Это позволяет получить результат даже после асинхронного задания.
Я использую этот подход много. Мне было бы интересно узнать, насколько хорошо этот подход работает, когда задействован результат обратно через последовательные модули.
Вы не можете установить jdk. Проверьте свой /lib/tools.jar в своей папке java. Если нет, #sudo apt-get установит default-jdk, и ошибка исчезнет.
bin/hadoop com.sun.tools.javac.Main WordCount.java
окончательно работает как java com.sun.tools.javac.Main WordCount.java
.
Если ваш classpath / javahome прав, попробуйте ввести java ...
самостоятельно и проверьте имя com.sun.tools...
с помощью клавиши TAB , Возможно, имя не является правильным. (яйцо, вы используете Java из Oracle, а не SUN)
Другое предложение изменяет $HADOOP_HOME/etc/hadoop/hadoop-env.sh
. Добавьте tools.jar
в HADOOP_CLASSPATH
.
У меня такая же ошибка.
И я решил это, добавив параметр среды HADOOP_CLASSPATH:
export HADOOP_CLASSPATH=/usr/lib/jvm/java-7-openjdk-amd64/lib/tools.jar
Пожалуйста, убедитесь, что вы установили OpenJDK7. Я использую Ubuntu 14.04:
sudo apt-get install openjdk-7-jdk