Еще один подход к возврату значения из асинхронной функции - передать объект, который сохранит результат от асинхронной функции.
Вот пример того же:
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
для хранения значения во время асинхронной операции. Это позволяет получить результат даже после асинхронного задания.
Я использую этот подход много. Мне было бы интересно узнать, насколько хорошо этот подход работает, когда задействован результат обратно через последовательные модули.
Попробуйте загрузить jar из здесь
Вы можете найти, он содержит класс, который вам нужен.
Лучше всегда загружать в качестве первой попытки самую последнюю версию с сайта разработчика
. У меня было то же сообщение об ошибке, которое у вас было, и, загрузив банку с выше (slf4j-1.7.2.tar.gz самая последняя версия с 2012OCT13), распаковка, разжатие, добавление 2 банок для создания пути в eclipse (или добавление в classpath в comand-строке):
slf4j-api-1.7.2.jar
slf4j-simple-1.7.2.jar
Мне удалось запустить мою программу.
Добавьте следующие JAR в путь сборки или папку lib проекта:
У меня тоже возникла эта проблема, и я исправил ее таким образом. Я пытался запустить локальную работу mapreduce через Eclipse, после установки конфигураций я встретил эту ошибку (в Linux, Virtual Box). Чтобы решить эту проблему,
file:/usr/lib/Hadoop/client-0.20
, выберите три баночки, названные по умолчанию «slf4j ". Тогда вы сможете выполнять задание локально. Надеюсь, мой опыт поможет кому-то.
Немного больше объяснений: имейте в виду, что «я» в «api» является интерфейсом. В slf4j-api jar хранятся только необходимые интерфейсы (фактически LoggerFactory является абстрактным классом). Вам также нужны фактические реализации (пример которых, как отмечалось выше, можно найти в slf4j-simple). Если вы посмотрите в банку, вы найдете необходимые классы в пакете «org.slf4j.impl».
Вам нужно загрузить баночки SLF4J с на официальном сайте в качестве zip (v1.7.4) или tar.gz (v1.7.4)
Загрузка содержит несколько банок, основанных на том, как вы хотите использовать SLF4J. Если вы просто пытаетесь разрешить требование какой-либо другой библиотеки (я полагаю, GWT) и не очень заботятся о правильном использовании SLF4J, то я бы, вероятно, выбрал slf4j-api-1.7.4.jar, поскольку Simple jar предложенный другим ответом, не содержит, насколько мне известно, конкретного класса, который вы ищете.
Для решения этой проблемы нужен «slf4j-simple-1.7.2.jar».
Я загрузил zip-файл «slf4j-1.7.2.zip» из http: // slf4j.org/download.html. Я извлек zip-файл, и я получил slf4j-simple-1.7.2.jar
Я знаю, что это старый вопрос, но недавно я столкнулся с этой проблемой, и я искал ее в google, и я наткнулся на эту документацию здесь с сайта slf4j.
, поскольку он описывает следующее:
Эта ошибка сообщается, когда класс org.slf4j.impl.StaticLoggerBinder не может быть загружен в память. Это происходит, когда не требуется привязка SLF4J к пути класса.
Размещение одного (и только одного) из slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar или logback-classic.jar в пути класса должно решить проблема.
SINCE 1.6.0 Начиная с версии SLF4J 1.6, при отсутствии привязки, SLF4J по умолчанию будет выполнять регистрацию без операции (NOP).
blockquote>Надеюсь, что это поможет кому-то.
У меня было то же самое на Android. Вот как я его исправил:
, включая ТОЛЬКО файл:
slf4j-api-1.7.6.jar
в моей папке / папке
Наличие какого-либо дополнительного файла slf4j * вызвало NoClassDefFoundError.
Очевидно, что остальные библиотеки могут быть там (android-support-v4 и т. д.)
Версии: Eclipse Kepler 2013 06 14 - 02 29 ADT 22.3 Android SDK: 4.4.2
Надеюсь, кто-то сэкономит время, потраченное на это!