angular - 无法在函数离子之外获得承诺值
问题描述
我试图在我的函数之外获得承诺的价值,但它返回未定义
这是我尝试过的代码:
主页.ts
class Home{
dd:any;
constructor(public dbHelpr:DbHelperProvider){
}
getData(){
this.dbHelpr.getRecordById("51").then(function(res:any){
dd = res
console.log("dd in "+dd);
});
console.log("dd out "+dd);
}
}
DbHelperProvider.ts
getRecordById(_id){
return new Promise(resolve => {
this.db.get(_id).then(function (doc) {
resolve(doc);
}).catch(function (err) {
console.log(err);
resolve("fail");
});
})
}
我的日志显示: dd inside abcdef
dd 在未定义之外
我该如何解决这个问题?
先感谢您!
解决方案
因为console.log("dd out "+dd);
之前被调用console.log("dd in "+dd);
(因为 promise 的异步性质),因此你得到 undefined for dd out
。
分配给iedoc
里面的全局变量.then
this.db.get(_id).then(function (doc) {
resolve(doc);
// assign to global var here.
})
推荐阅读
- flutter - 是否可以在 Flutter 中使用 body 发出 GET 请求?
- java - 强制不可变接口实现功能接口
- ruby - 给定一个 CIDR 块列表,如何有效地找到一个 IP 地址在 Ruby 中属于哪个块?
- microsoft-edge - 如何向 Microsoft Edge 添加扩展
- apache-spark - 如何修复非法 Parquet 类型:INT64 (TIMESTAMP_MICROS) 错误
- selenium - 通过 jmeter 在 blazemeter 上远程运行 selenium 测试
- bash - 如何避免删除当前工作目录
- swift - 如何区分 kotlin multiplatform/native 中不同文件夹中的相同类名以快速实现?
- regex - 如何使正则表达式匹配字符串中的所有情况
- python - 如何根据文件夹中的所有类创建对象列表?