Невозможно получить доступ к анонимной функции - PullRequest
0 голосов
/ 26 ноября 2018

Существует две среды, в которых используется сторонняя библиотека (BrowserPrint.js);

  1. WORKING ENV - JS и jQuery, где библиотеки 3party включены просто в<head> часть документа

    и основная функция вызывается в

    $(document).ready(setup_web_print);
    
  2. НЕ РАБОТАЮЩИЙ ENV - угловой, JS иjQuery

    , где сторонние библиотеки включены в компонент:

    import * as $ from 'jquery';
    import * as bp from '../../../content/js/BrowserPrint-1.0.4.js';
    

    и запущены в ngOnInit() ловушке жизненного цикла:

    ngOnInit() {
       $(document).ready(function () {
        ... 
       })
    ...
    }
    

    В консоли возникла ошибка

    ReferenceError: finishedFunction is not defined
    at Object.t.getDefaultDevice (BrowserPrint-1.0.4.js:95)
    

, поэтому кажется, что он не может получить доступ finishedFunction

var a = n("GET", e("available"));
        a && (finishedFunction = function(e) {
            response = e, response = JSON.parse(response);
            for (var n in response)
                if (response.hasOwnProperty(n) && response[n].constructor === Array) {
                    arr = response[n];
                    for (var i = 0; i < arr.length; ++i) arr[i] = new t.Device(arr[i])
                }
            return void 0 == o ? void r(response) : void r(response[o])
        }, i(void 0, a, finishedFunction, s), a.send())

Кто-нибудь знает, как это исправить, и почему не работает во втором env?

1 Ответ

0 голосов
/ 26 ноября 2018

Я действительно не знаю, как JavaScript обрабатывает этот код, написанный запятыми.Но я думаю, что это то, что вы хотите, не так ли?

 if(a) {
    var finishedFunction = function(e) {
      if (response = e, "" == response) return void s(null);
      response = JSON.parse(response);
      var n = new t.Device(response);
      s(n)
    };
    i(void 0, a, finishedFunction, o);
    a.send();
 }
...