angular - 承诺不按顺序返回值
问题描述
您好,我是离子新手,
我想从pouch-db
后台获取数据。
经过一番研究,我发现,promise 的概念将解决我的问题。
我想按以下 1、2 和 3 的顺序执行我的控制台日志
这是我的代码:
班级:
class1{
method1(){
class2Provider.method2().then(function (result:any) {
console.log("3")
console.log("VSCP "+result);
this.navCtrl.push('InspectionPage',{'inspectnData':result});
})
}
}
提供者1:
export class ModelProvider {
method2(){
return new Promise (resolve => {
this.dbHelpr.getRecord().then(function (result:any) {
console.log("2")
console.log("data for inspectId is -------------"+JSON.stringify(tempData));
resolve(result)
})
})
}
}
提供者2:
export class DbHelperProvider {
getRecord(){
return new Promise(resolve => {
this.db.get(_id).then(function (doc) {
console.log("1")
resolve(doc);
}).catch(function (err) {
console.log(err);
resolve("fail");
});
})
}
}
上面的代码首先执行日志 3 并显示错误
无法读取未定义的属性“navCtrl”
如何按我想要的顺序执行功能?
解决方案
使用 Fat 箭头函数=>
代替function
.
class1{
method1(){
class2Provider.method2().then((result: any) => {
console.log("3")
console.log("VSCP " + result);
this.navCtrl.push('InspectionPage', { 'inspectnData': result });
})
}
}
推荐阅读
- android - 用户在另一个类中输入后在 TextView 中显示字符串
- php - DateTime::__construct() 期望参数 1 是字符串,给定对象
- .net - 如何在具有不同空格的字符串中获取单词(逐字)?
- node.js - NodeJS child_process 或 nextTick 或 setTimeout 用于长时间等待任务?
- java - 如何从谷歌驱动器直接下载链接获取文件扩展名?
- html - Mozilla firefox 不支持预加载
- perforce - 将 perforce depot 导入 linux 开发环境
- c++ - GMock 死亡案例 - 未调用模拟函数
- r - 信号的所有值在它们降至最小值之前的平均值
- ios - Adobe Air - 应用程序上传错误 - 无效的可执行文件大小