Разрешить обещание по изменению переменной до определенного значения - PullRequest
0 голосов
/ 28 декабря 2018

Я пишу приложение, используя reactivex и typescript, которое контролирует зарядку аккумулятора.Здесь я использую много обещаний, что подводит меня к моему вопросу: я хочу, чтобы обещание внутри цепочки было разрешено, как только переменная (состояние заряда) достигнет определенного значения.

Я попытался использовать* Цикл while, который периодически проверяет значение и возвращает его, как только оно достигнуто, но блокирует всю программу.

private _performChargeJob(job: ChargeJob): Promise<any> {
    // Return a promise that is resolved if the job has finished processing.
    return this._performGoal(job.goals[0].goalId)
        .then(() => {
            this._handleCharge(this._soc, 100); // this is the important part where I'd wish the promise to resolve
        }).then(() => {
            this.logConsole("Finished charging.");
            this.callRosService({name: "set_charge_state", serviceType: "insystems_srvs/SetChargeState"}, {
                set_charge_state: 0,                 // stop charging
            });
        });
}

private _handleCharge(soc: number, maxSoc: number) {
// this function should return/resolve a promise when variable soc reaches 100.0
    this.logConsole("starting charge.");
    this.callRosService({name: "set_charge_state", serviceType: "insystems_srvs/SetChargeState"}, {
        set_charge_state: 1,                // start charging
    });
}

Здесь я ожидаю какой-то watch() (что устарело) илиновый promise, который может ждать, пока значение достигнет этого уровня.Может быть, даже observable?

Спасибо!

...