angular - 从 void 函数返回
问题描述
我有一个read()
带有箭头函数作为参数的函数。如果我像这样实现该功能,则该值将按应有的方式显示在控制台中。
function(path: string) {
this.db.read(path, val => {
console.log(val.value)
});
}
我的问题是,我怎样才能从这个函数中获得价值?
我尝试了几种返回方式,但没有任何效果。
//This is not working...
function(path: string) {
newValue = this.db.read(path, val => {
console.log(val.value)
return val.value;
});
return newValue;
}
//Is working, but not really good...
private newValue;
function(path: string) {
this.db.read(path, val => {
console.log(val.value)
this.newValue = val.value;
});
return this.newValue;
}
也许有人可以给我一个关于如何做到这一点的提示。
解决方案
试试这个方法。返回新的 Promise 而不是 val ,您将在未来某个时间获得。:
function readDb(path: string) {
return new Promise(function(resolve, reject) {
this.db.read(path, val => {
resolve(val.value);
});
});
}
this.readDb("/path").then(function(val) { console.log(val) });
推荐阅读
- javascript - 如何使用 chart.js 在折线图中编辑自定义工具提示?
- kubernetes - 无法将工作节点加入 k8 主节点
- fortran - 如何在 Fortran 中做出正确的数据声明?
- javascript - 如何在 Javascript 中一次打开多个窗口?
- java - java.net.HttpURLConnection 默认超时记录在哪里?
- database - group by 子句中的预聚合是如何完成的 - Teradata
- javascript - 如何在 Vue 类组件中定义过滤器?
- python - 如何将 TKinter 中选择的 radioButton 默认设置为程序结束前选择的那个?
- jsp - 为什么这段代码没有跳转到验证文件chat.jsp?
- spring-kafka - 发送记录的 Kafka 模板