首页 > 解决方案 > 解决将变量更改为特定值的承诺

问题描述

我正在编写一个使用reactivextypescript控制充电电池的应用程序。我在这里使用了很多 Promise,这让我想到了我的问题:我希望链中的 Promise 在变量(充电状态)达到某个值时立即得到解决。

我尝试使用一个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

谢谢!

标签: javascripttypescriptpromisereactivex

解决方案


推荐阅读