Как мне отменить ионное обещание - PullRequest
0 голосов
/ 22 января 2019

Я делаю список элементов, и каждый раз, когда пользователь вводит какое-то значение, он вызывает функцию listVendas, которая выполняет немедленный поиск в API, но это вызывает множество запросов, и некоторые запросы могут завершаться раньше других, поэтомуу меня вопрос.

Как я могу отменить обещание, чтобы я мог создать новое?

listVendas(event?: any) {
    let codigovenda;

    if (event) {
        codigovenda = event.value;
    }

    if (typeof this.promise != 'undefined') {
        // HOW DO I ABORT THE PREVIOUS PROMISE
    }

    this.promise = this.vendaProvider.getAll(codigovenda);

    this.promise.then(data => {
        this.vendas = data;
    })
}

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

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

    <form [formGroup]="searchForm" (ngSubmit)="listVendas()">
        <ion-card class="search">
            <ion-icon class="icon-search" name="search"></ion-icon>
            <ion-input type="number" pattern="[0-9]*" value="" formControlName="codigovenda"></ion-input>
            <ion-icon class="icon-camera" name="camera" (click)="scanBacode()"></ion-icon>
        </ion-card>
        <ion-row class="row-submit" justify-content-center>
            <button ion-button full icon-start type="submit">
                Buscar
            </button>
        </ion-row>
    </form>
0 голосов
/ 22 января 2019

В Ionic вы можете использовать оператор rxjs switchMap и оператор debounceTime , чтобы сделать это очень легко.

пример кода

...