Показать сообщение отдельно
  #96 (permalink)  
Старый 29.04.2015, 19:36
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Erolast Посмотреть сообщение
https://nodejs.org/api/domain.html. Это костыль для обработки ошибок в асинхронном коде, сейчас, с появлением generator expressions, становится deprecated.
[/js]
а почему костыль обоснуешь? и как это связано с generator expressions?

Вообще да, честно говоря я сначала думал, что за проблемы с читабельностью при использовании promise'ов? А потом посмотрел на то, что получилось в предыдущем сообщении... Хотя с другой стороны, вот вы тут жалуетесь, а на другой стороне планеты бородатые мужики на c херачат, а некоторые вообще на assembler, и ничё

Но это так, отступление. Собственно, почему все так прицепились к этим промисам? Придумали проблему и мужественно ее решаем? Звучит умно? Я как-то давно тут на форуме предлагал такую штуку как AsyncChain. Правда там не было аналога Promise.all, но в чем дело давайте придумаем:

function foo() {
    var onError = function() {
        console.log('error');
    };
    new AsyncChain({onError: onError})
        .add(function(NEXT1) {
            this.data = 'getData';
            return NEXT();
        })
        .add(function(NEXT1) {
            var this1 = this;
            new AsyncAllChain({onError: onError})
                .add(function(NEXT2) {
                    this.var1 = 'getData';
                    return NEXT2();
                });
                .add(function(NEXT2) {
                    this.var2 = 'getData';
                    return NEXT2();
                })
                .add(function() {
                    this1.more = [this.var1, this.var2];
                })
                .go();
            return NEXT1();
        })
        .add(function() {
            console.log(this.data);
            console.log(this.more);
        })
        .go();
}

foo();


Вроде бы ничего не забыл. Ну это не то чтобы окончательный вариант, критика приветствуется, давайте придумаем как сделать так, чтоб всем было хорошо Ну или почти всем, потому что если всем, то тогда promise'ам альтернатив нету, думаю.

И по поводу интересных ссылок, альтернативный вариант.

Что там дальше? Потоки? Я собственно почему веб воркеры вспомнил? В свое время дедушка Douglas Наше Все Crockford рассказывал, чем так хорош nodejs (можно смотреть с начала, там все интересно) и в чем самая большая ошибка java (the biggest design mistake in java, на 8-ой минуте, 08:40). Понятно, что это для вас не авторитет. Да и я не то чтобы с ним во всем согласен. Но он один из двух людей, которых интересно слушать И, кстати, его речь проще всего понимать.

Опять я отвлекся, в общем он там говорит, что потоки — это сложно. Event loop наше все. И веб воркеры один из вариантов решения проблемы долгих вычислений. В чем разница? В том что веб воркеры не шарят состояние с основным потоком. Не нужны блокировки и прочая муть. Что говорит google? Что потоки уже есть в nodejs (безопасные, без sharing state). Что можно форкать процессы. И что есть даже модуль cluster, который решает смежную проблему. Так чего же вам не хватает, м?

Ну, вроде все проблемы решил, или не?

P.S. Приведите какой-нибудь use case для Promise.all(), плз?
Ответить с цитированием