• Вопрос про область видимости в JS?

    sompylasar
    @sompylasar
    Frontend Software Engineer
    Пожалуйста, не путайте объявление (создание) функции и вызов функции. В вашем коде вызывается функция foo, ей передается в качестве параметра тут же созданная анонимная функция, которая может вообще не быть вызвана или хоть как-то использована внутри foo. Поэтому, как заметили ранее blo и kuzemchik, результат зависит от кода функции foo и от ее синхронности.

    В неупрощенном примере, по-видимому, вы используете Node.js, поэтому лучше воспользоваться полностью асинхронной моделью, нежели заменять функцию на синхронную, то есть в функцию getView принимать функцию, которая будет вызвана по завершении асинхронной операции и будет принимать результат завершения.

    И еще, на мой взгляд, лучше явно отличать случаи ошибки и правильного исполнения, то есть в output при неудаче класть null или undefined, а не строку с «магическим» содержанием 'not exists'.

    function getView(name, params, callback) {
    //< Дополнительный параметр должен быть function callback(error, output) 
        var filepath = ...;
        path.exists(filepath, function (exists) {
            var view = ...,
                error = null, //< Ошибки изначально нет.
                output = null; //< Результата изначально нет.
            
            if (exists) {
                output = ...; //< Записываем результат выполнения. Ошибки нет.
            }
            else {
                error = new Error('View '+ name + ' file ' + filepath + ' not found'); //< Результата нет, но есть ошибка.
                console.log(error); //< Её и логируем.
            }
            callback(error, output); //< Вызываем обработчик завершения, в который передаем ошибку (даже если ее нет, всегда первым параметром - так принято в Node.js) и следом результат.
        });
        //< Ничего не возвращаем. Результат попадет в callback, когда он станет доступным.
    }
    
    Ответ написан
    Комментировать
  • Вопрос про область видимости в JS?

    kuzemchik
    @kuzemchik
    Все зависит от синхронности/асинхронности foo. Если она синхронна, то есть как описал megahertz будет alert(1). Если она асинхронна, то будет alert(0), так как alert выполнится раньше чем анонимная функция foo.
    Ответ написан
    1 комментарий
  • Вопрос про область видимости в JS?

    megahertz
    @megahertz
    full stack разработчик
    Если предположить что
    function foo(f){
        f(true)
    };

    то все работает как и ожидается
    Ответ написан
    4 комментария
  • Mime-type файла в Node.js

    iStyx
    @iStyx
    var execFile = require('child_process').execFile;
    var filename = ...;
    execFile('file',['-b','--mime-type',filename],function(error,stdout,stderr) {
        console.log("STDOUT:",stdout.trim());
    });
    
    Ответ написан
    2 комментария
  • Хочу изучить Node.js

    Mithgol
    @Mithgol
    Я также хочу предостеречь, сообщив о том, что многие источники устаревают стремительно, оттого что авторы их не следят за эволюцией Node — хотя, казалось бы, для такого слежения достаточно читать blog.nodejs.org.

    Например, по адресу http://nodeguide.ru/doc/felix/beginner/ можно прочесть:

    Прежде всего, для того, чтобы использовать Node.js, необходимо иметь под рукой работающую *nix-подобную операционную систему. Рекомендуется Linux или OSX, но также могут подойти FreeBSD или cygwin (под windows). В настоящее время ведутся работы над портированием Node.js под windows, но пока они не доведены до стабильного состояния.

    Портирование Node.js под Windows завершилось успехом в ноябре 2011 года, сейчас май 2012 года — стало быть, этот абзац устарел на полгода.
    Ответ написан
    2 комментария
  • Хочу изучить Node.js

    @aleks_raiden
    Есть еще форум где мы обитаем — forum.nodejs.ru
    Ответ написан
    Комментировать
  • Хочу изучить Node.js

    taliban
    @taliban
    php программист
    www.nodebeginner.ru/ сложно если вы не проектировали толстые клиенты на JS. Вообще на ноде можно получить бездну утечек и сломать голову проектируя приложения на событиях, после обычных ЯП. С первого взгляда не так уж и сложно, но подход совершенно другой.
    Ответ написан
    1 комментарий
  • Хочу изучить Node.js

    Nesvet
    @Nesvet
    Разработчик
    Ответ написан
    Комментировать
  • Какие сертификаты полезно иметь веб-разработчику?

    Сертификаты, на сколько я знаю, больше нужны за бугром, у нас же на них особо не смотрят.
    Ответ написан
    1 комментарий
  • Нужна помощь web-разработчиков

    Aco
    @Aco
    Заклинатель кода
    А почему passthru вам не угодила?
    <?php
    
    passthru('somecommand --exec');
    
    ?>
    

    Вывод будет идти в реалтайме на экран
    Ответ написан
    Комментировать
  • Нужна помощь web-разработчиков

    alexdjachenko
    @alexdjachenko
    Есть простой вариант, есть сложный.
    Простой: выполняете команду через proc_open(), читаете из открытого командой потока и выдаете на страницу с помощью echo. После каждый выдачи делаете flush() для передачи результата на страницу. Сама страница при этом будет висеть «недозагруженной», коннект с сервером будет открыт и по мере работы скрипта будут подгружаться новые данные. Плюс — в простоте, минусы в ограничениях по вёрстке (чем проще страница — тем лучше). Если браузер, промежуточный прокси-сервер или веб-сервер настроены разрывать открытое соединение через какое-то время, способ будет работать на не очень долгих командах.
    Более сложные варианты связаны с AJAX: либо то же самое соединение открываем уже из JavaScript и подгружаем на страницу результаты — так можно сделать более сложную верстку, либо делаем совсем сложно, складываем результат исполнения команды в файл на сервере, пишем скрипт на php, который частями отдает его нашему JavaScript-у, который отображает его на странице.
    Ответ написан
    3 комментария
  • Нужна помощь web-разработчиков

    7workers
    @7workers
    пускай программа выводит рандомные числа в файл, а ajax этот файл периодически читает и показывает, через php скрипт, если нужно.
    Ответ написан
    Комментировать