javascript - 解决将变量更改为特定值的承诺
问题描述
我正在编写一个使用reactivex
并typescript
控制充电电池的应用程序。我在这里使用了很多 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
?
谢谢!
解决方案
推荐阅读
- git - 以下未跟踪的工作树文件将被合并覆盖(保留图像)
- excel - Excel公式为连续相同的B列值复制第一列A值;然后重复下一个 B 列值
- javascript - new Date() 返回不同的时间
- python - DBus 错误:无法附加类型错误,说明列表索引必须是整数或切片,而不是 dict
- r - 在 R 中保存为 HTML 时的 DT 空白
- bluetooth - 经典蓝牙、BLE 或... Wifi Direct?
- c# - 通过绑定应用样式
- kubernetes - 如何防止用户创建带有特定标签的 pod?
- machine-learning - 将 Keras 转换为 Pytorch
- php - 如何在 Virtuemart 结帐中禁用收货方和计费信息