Профильная последовательность начальной загрузки подводной лодки/Ядра

Вы можете использовать оператор from из RxJs, который преобразует любое Обещание в Observable и далее связывает его (возможно, используя flatMap). См. https://www.learnrxjs.io/operators/creation/from.html

Подобные вопросы отвечают здесь:

Возврат Наблюдаемый внутри Обещания

Как вернуть Observable после разрешения Promise в Ionic 2 / Angular 2? (упомянутый здесь оператор fromPromise должен быть заменен новым оператором from) [ 1118]

Другой вариант - использовать async await ключевые слова в Typesript / ES6. Везде, где вы вызываете метод uploadFile, просто используйте (await uploadFile(formInstanceId, questionId, repeatId, filePath, isEquipment)), который будет возвращать наблюдаемую, которая была возвращена методом networkService.postFile().

Ваш метод станет:

 public async uploadFile(formInstanceId, questionId, repeatId, filePath, isEquipment): Promise> {

    const result = await this._file.resolveLocalFilesystemUrl(filePath);
    console.log("fileSelected", result);

    let fileName = result.name;
    let nativeURL = result.nativeURL;
    let path = nativeURL.substring(0, nativeURL.lastIndexOf("/"));

    const buffer = await this._file.readAsArrayBuffer(path, fileName);
    let imgBlob = new Blob([buffer], {type: "image/jpeg"});

    let params = {fileName: 'attachment'};
    let query = this.encodeQueryData(params);

    let uploadFileURL = this._networkService.serverUrl + '/api/upload?' + query;

    return this._networkService.postFile(uploadFileURL, fileName, imgBlob).pipe(map(response => {
        console.log(response);
        return {
        formInstanceId: formInstanceId,
        questionId: questionId,
        repeatId: repeatId,
        filename: response[0].filepath,
        isEquipment: isEquipment
        };
    },
    error => {
        return throwError(error);
    }
    ));
}

Вот как вы его потребляете:

(await uploadFile(formInstanceId, questionId, repeatId, filePath, isEquipment)).subscribe(result=> { /* ...Your code here... */ });

Ссылка на асинхронное ожидание: https://www.typescriptlang.org /docs/handbook/release-notes/typescript-1-7.html

5
задан uzurpatorul 1 May 2009 в 23:47
поделиться

3 ответа

Если вы считаете, что печать может повлиять на производительность (я так не думаю, если вы печатаете со скоростью менее 10 Кбайт / с), сохраните эти данные в памяти и распечатайте их позже.

1
ответ дан 14 December 2019 в 04:47
поделиться

Все знают, что лучший способ профилировать загрузку с помощью сонара.

3
ответ дан 14 December 2019 в 04:47
поделиться

There is a wonderful utility called bootchart which will give you a graphical representation of the boot process and tell you when each task started and how long it took to complete.

Check it out.

alt text
(source: bootchart.org)

4
ответ дан 14 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

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