Показать сообщение отдельно
  #40 (permalink)  
Старый 23.12.2011, 13:34
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от x-yuri
библиотека
Я нигде не называл это библиотекой.
Сообщение от x-yuri
Где конкретные примеры
Примеры я уже приводил, вот хотя-бы этот:
Цитата:
Рассмотрим пример (который взят из головы и в нем возможны ошибки) гипотетического парсера сайта, который после парсинга заносит данные в БД, и, после занесения, вызывает некоторый код.
var html = '';
request.on('response', function (response) {

    response.on('data', function (chunk) {
        html = html + chunk;
    });

    response.on('end', function() {
        //какой-то парсер
        parse(html, function(data){  
                //какая-нибудь функция, добавляющая данные в базу
        addToDatabase(data, function() {  
            doSomething();
        })
    });

    });
});



Много вложенных колбеков — не есть гуд, пробуем по-другому.
var html = '';
var responceOnEnd = function() {
    parse(html, parsed);
}
    
var parsed = function(data){ 
    addToDatabase(data, addedToDatabase)
}

var addedToDatabase = function() {
    doSomething();
}

request.on('response', function (response) {

    response.on('data', function (chunk) {
        html = html + chunk;
    });

    response.on('end', responceOnEnd);
});



Но здесь несколько лишних переменных, в которых так же можно запутаться.

Я предлагаю сделать вот так:

wait(function(runNext){
    request.on('response', runNext);
}).wait(function(runNext, response){
    response.on('data', function (chunk) {
        html = html + chunk;
    });
    
    response.on('end', function() {
        runNext(html);
    });
}).wait(function(runNext, html){
    parse(html, runNext);
}).wait(function(runNext, data){
    addToDatabase(data, runNext);
}).wait(function(){
    doSomething();
})


Сообщение от x-yuri
до этого не сложно догадаться, но в моем случае объект присутствует явно, и к чему относится this очевидно. Или по-другому: у тебя там только функции, причем здесь this? А у меня есть объект.
Это дело твоё, хочешь, напиши функции setState, getState, я ведь тебе не указ, как и ты мне. Пишем так, как каждый считает лучшим, не без советов, к которым я стараюсь прислушиваться.
Сообщение от x-yuri
ты стараешься не усложнять
Да, ты прав, я люблю, когда всё просто. Самые популярные вещи — просты в использовании, посмотри на ту же "быдло-библиотеку" jQuery.
Сообщение от x-yuri
Но в результате такие решения не выдерживали столкновения с практикой и приходилось их доделывать.
А если усложнить, то, вполне возможно, придется переделывать. Ты сам пишешь:
Сообщение от x-yuri
Хорошие библиотеки возникают из решения практических задач
что бы это не значило, нужно отталкиваться от практических задач.
Ответить с цитированием