Приложение Ionic 3 / Angular 5 вылетает в (требуемой) функции цикла - PullRequest
0 голосов
/ 26 апреля 2018

Чтобы описать функцию, которую я имею в упрощенном виде, я хочу загрузить большой набор изображений, в моем случае ~ 50 единиц. Я использую рекурсивную попытку.

Таким образом, я запускаю все во внешней функции и повторяю, пока каждое изображение было загружено. Image-source загружается в Image-объект и переводится в Canvas для получения правильного формата src для сохранения. Дополнительная информация: Я не могу загрузить их в кучу, приходится делать это изображение за изображением.

После загрузки примерно половины изображений приложение вылетает. Я предполагаю, что он думает, что находится в тупике, что вызывает аборт. Любая идея, как сказать Ionic, что эти ситуации следует игнорировать?

Протестировано на различных Android-устройствах, поэтому версии ОС (4.4 - 8.1) не должны иметь значения.

КОД

constructor(...) {
    this.downloadImage(this.images);
}   



downloadImage(images) {     
    ... downloadStuff...
    var img = new Image();
    img.crossOrigin = 'Anonymous';
    img.onload = function() {

        var canvas = document.createElement('canvas');
        canvas.height = img.height;
        canvas.width = img.width;
        var ctx = canvas.getContext('2d');
        ctx.drawImage(img, 0, 0, img.width, img.height);

        var src = canvas.toDataURL('image/jpeg');
        saveImg(src);
        images.splice(0,1)
        if(images.length == 0) {
            alert("DONE!!");
        } else {
            this.downloadImage(results);
        }
    }
    img.src = images.photo_url;
}

Память

Memory

Журнал ошибок Android Studio:

A / libc: фатальный сигнал 4 (SIGILL), код 1, адрес ошибки 0xd4502e96 в tid 23363 (Chrome_InProcRe), pid 23231 (ft.xxx) E / SurfaceFlinger: не удалось найти слой (SurfaceView - xxx.MainActivity # 0) в родительском слое (без родителя).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...