• Еще один велосипед для борьбы с callback hell в JavaScript
    0
    В 3-м примере показано как SynJS.run вызывается рекурсивно чтобы обойти дерево.

    я имею ввиду после того как мы получили дерево и хотим в с ним что-то сделать. Например отфильтровать узлы.


    Можно вызывать вложенные SynJS.run, в этой части все как в обычном JavaScript

    ну то есть от callback hell мы никуда не ушли?


    SynJS.run(myFetches,null,modules,urls,function (res) {
            // обработка ошибки 1?
            SynJS.run(filterTree, null,modules,res,function (res) {
                // обработка ошибки 2?
               SynJS.run(doSomethingWithFilteredTree, null,modules,res,function (res) {
                   // обработка ошибки 3?
                   console.log(res); 
               });
            });
        });
    

    @amaksr так?

  • Еще один велосипед для борьбы с callback hell в JavaScript
    0
    SynJS.run(myFetches,null,modules,urls,function () {
            console.log('done');
        });

    Если после завершения нужно выполнить еще что-то с полученным результатом, то это будет выглядеть так?


    SynJS.run(myFetches,null,modules,urls,function () {
            SynJS.run(myAfterFetches,null,modules,??result?? /*где бы его получить*/,function () {
            console.log('done');
        });
    
        });
    

    или есть техника как избежать SynjsHell, простите за каламбур

  • Еще один велосипед для борьбы с callback hell в JavaScript
    +7

    Судя по ридми на github в библиотеке отсутствует обработка ошибок


    Following operators are not yet supported:
    • const
    • let
    • for… of
    • try… catch
      а значит вся её ценность равна нулю.

    Тот же костыльPromise отлично с этим справляется.


    Кстати, так вами любимый async/await тоже использует Promise


    When async function is called, it returns a promise. When the async function returns a value, the promise will be resolved with the returned value. When the async function throws an exception or some value, the promise will be rejected with the thrown value.

    Async function can contain await expression, that pauses the execution of the async function and waits for the passed promise's resolution, and resumes the async function's execution and returns the resolved value.

    подробнее можно например тут посмотреть https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

  • Путеводитель по JavaScript Promise для новичков
    0
    В ноду async вам тоже нужно устанавливать и подключать. даже если нет возможности поставить пакетным менеджером всегда можно закинуть файл в папку проекта или воспользоваться cdn
  • Путеводитель по JavaScript Promise для новичков
    0
    На самом деле пока даже рекомендуется использовать Bluebird вместо нативных промисов. Если верить бенчмаркам, он в разы быстрее
  • Почему не надо писать ботов для Skype
    +3

    ну так телеграм и умеет. Правда есть ограничение — можно редактировать только сегодняшние сообщения.


    А вообще для общения с заказчиками очень удобная штука. Ограничение на редактирование тут помогает — всегда есть документальное подтвеждение хотелок. Тут на руку играет даже то, что удаление сообщения удаляет его только локально у пользователя, а у остальных оно остается.


    От скайпа полезного осталось только звонки. Но, хотя они есть в вайбере, я предпочитаю на создать встречу и скинуть в телеграм.


    А скайп… Ну что скайп. Уже история

  • От Jquery UI до Ext.js: обзор библиотек виджетов для построения интерфейса на JS. Часть 2
    0
    ну все равно, согласитесь, дорого. с тем же успехом можно заплатить за готовую админку с ресурса типа https://themeforest.net/category/site-templates/admin-templates и получить ту же кучку контролол, а потом так же их самостоятельно допиливать. разница в том, что потратить придется на порядок меньше
  • Всем привет, я вебмастер и меня взломали
    –13

    в связке, например, nginx + nodejs такой взлом вряд ли удастся. а если еще все разнести в docker контейнеры, то все интереснее становится. для взломщика, конечно.


    я не говорю что невозможно, но гораздо сложнее взломать простой заливкой файлов. на шаред хостинге так кончено не настроишься

  • Тестирование RESTful API на NodeJS с Mocha и Chai
    0

    chai дает даёт ассерты описаные языком близким к натуральному. к тому у chai есть удобный chain механизм.
    Например, мы ждем от api в ответ json c какой-то конкретной ошибкой. Sould синтаксис дает понимание что мы хотим


    req.body.should.be.an.Object().which.has.property('error','error text')

    Ваш подход больше подходит тем, кто сам себе и программист и тестироващик. И это все-таки ближе к идеям tdd, так как не описывает поведение, а проверяет код.


    A bdd — это по сути переложение тех.задания тестировщиком с учетом различных use-case. Оно и код проверяет и поведение описывает.

  • Асинхронный код в синхронный встроенными средствами
    +1
    Минусующие поясните в чем тут проблема. С async/await подход конечно лучше, но чейн промисов вроде нормальная практика? А Q здесь можно заменить любой другой реализацией.
  • Тестирование RESTful API на NodeJS с Mocha и Chai
    0
    с вами полностью согласен. код брал as-is из оригинала. в конкретно данном примере разницы особой нет, хоть var пиши
  • Тестирование RESTful API на NodeJS с Mocha и Chai
    0
    k12th, глубоко лезть не стал в tape. На первый взгляд да приятно, но
    1. Как я понял сделать вложенные утверждения не получится
      пример
      Например «создание книги»:
      1. книга создается успешно
      2. при отсутствии поля N выдается ошибка
      3. при отсутствии заголовка H возвращается 403

      Для каждого такого описание придется делать отдельный файл, чтобы получить соответствующий вывод.

      Mocha же дает структурированный вывод + tape формат можно подключить с помощью плагина

    2. Общая настройка фикстур бывает нужна при негативном или альтернативном тестировании, когда есть набор данных и он заполняется перед группой тестов и после нее гасится

    Это то, что на первый взгяд вызвало сомнения в удобстве tape.
    Хотя все наверно зависит от выработанного workflow/структуры проекта
  • Тестирование RESTful API на NodeJS с Mocha и Chai
    0
    Из документации mongoose

    Mongoose 5.0 will use native promises by default (or bluebird,
    if native promises are not present) but still
    support plugging in your own ES6-compatible promises library. Mongoose 5.0
    will not support mpromise.