Функции JavaScript и дополнительные аргументы

Хорошо ... Оказывается, @ Adam Plocher был прав в первом предположении. Это флаг UseShellExecute.

Я использовал свою оболочку для запуска процесса, который имел UseShellExecute = false, потому что это было необходимо для перенаправления STDOUT и STDERR, которые я хотел, чтобы поместить их в мой журнал.

Я думал, что раньше пытался использовать UseShellExecute = true, но я думаю, что когда я пытался, я получил ошибку, потому что он все еще пытался перенаправить эти потоки, и я, должно быть, остановился на этом.

Я использовал мою другую обертку, которая имеет UseShellExecute = true, но не дает мне STDOUT и STDERR, и это работает. Я думаю, что могу с этим смириться, так как в любом случае достаточно подробного ведения журнала в моем коде.

Я до сих пор не знаю, ПОЧЕМУ так ведет себя при запуске процесса с UseShellExecute = false;

35
задан Dan Dascalescu 17 April 2014 в 11:28
поделиться

2 ответа

Начиная со всего Вы делаете со всем кроме URL, и domid передает его эти $.get, почему бы не это?

function process_type(url, domid, args) {
    $.get(url, args, function(data) {
        $(domid).html(data);
    });
}

// call it without type
process_type('myurl', 'domid', {domain:'..', scanid:'...'});
// call it with type
process_type('myurl', 'domid', {type: '..', domain:'..', scanid:'..'});
29
ответ дан Paolo Bergantino 27 November 2019 в 06:49
поделиться

все параметры в JavaScript являются дополнительными, можно использовать массив параметров в функции для доступа к параметрам, переданным порядковым образом как так:

function myFunction(option1)
{
   var option2 = arguments[1];
   if(arguments[0] == option1)
      alert("Happy Day, Option1 = " + option1 + ", Option2 = " + option2);
}

myFunction("Hello", "World");

Производит: Счастливый День, Option1 = Привет, Option2 = Мир

, Надо надеяться, это иллюстрирует, как можно использовать массив arguments для улучшения некоторого кода.

    function process_type(url, domid, domain, scan_id)
    {
            var myOptions = {
               domain: domain,
               scan_id: scan_id
            };

            if(arguments[4])
                myOptions["type"] = arguments[4];

            $.get(url, myOptions,

            function(data)
            {
                    $(domid).html(data);
            });
    }

Тогда можно назвать его с последним параметром, являющимся типом как дополнительный, если параметр передается, это используется, если не это опущено.

Также, так как фактический параметр является дополнительным во-первых, можно также добавить имя до конца функционального определения и использовать то же, если бы, но вместо arguments[4] Вы сделали бы if(type) myOptions["type"] = type;

    function process_type(url, domid, domain, scan_id, type)
    {
            var myOptions = {
               domain: domain,
               scan_id: scan_id
            };

            if(type)
                myOptions["type"] = type;

            $.get(url, myOptions,

            function(data)
            {
                    $(domid).html(data);
            });
    }

, Этот Вызов включал бы тип

 process_type("xxx", "xxx", "xxx", "xxx", "xxx");

, где этот вызов не был бы

 process_type("xxx", "xxx", "xxx", "xxx");
35
ответ дан Quintin Robinson 27 November 2019 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: