Ionic -Typeerror: .then() is not a function
Ionic -Typeerror: .then() is not a function
我试图从 Ionic 中的 assets/data/people-data.json 获取数据。在我的 providers/people-data.ts
getLocalData(){
try{
this.http.get('assets/data/people-data.json').map(res => res.json()).subscribe(data => {
return data;
});
}
catch (error) {
console.log("Error in httprequest");
return this.data;
}
return this.data;
}
在我的 search.ts 页面(我需要发布数据的地方)
代码如下
generateData() {
try {
this.peopleData.getLocalData().then((result) =>{
console.log("data recieved")
});
} catch (error) {
console.error("Couldnot fetch data",error);
}
}
这是因为 getLocalData
应该 return 一个 Promise
但它实际上 returning undefined
(或者 this.data
是什么,在getLocalData
的开始)。
以下将正常工作。在这里,getLocalData
return 是一个可观察对象并且 generateData
订阅了它。
getLocalData(){
return this.http.get('assets/data/people-data.json').map(res => res.json())
}
generateData(){
this.peopleData.getLocalData().subscribe(
(result) =>{
console.log("data recieved")
}, (err)=>{
console.log("Error in httprequest");
}
);
}
你的代码有问题:
Observables
和Promises
是用来处理异步代码的两种模式(其他还有:callbacks
、asyn-await
)。
一个Observable
和Promise
,都是JavascriptObject
。两者都像是一个将在稍后时间到达的值的代理。
当值到达时(它称为解析值),如果您从 Observable
中提取解析值,则使用 .subscribe()
,但如果您使用从 Promise
中提取解析值,则使用 .then()
.
你的情况 this.http.get('assets/data/people-data.json')
return 是 Observable
。另外 this.http.get('assets/data/people-data.json').map(res => res.json())
returns 修改 Observable
。但是你试图使用 .then()
来提取它,这是不正确的。
此外,您 returning,observable.map().subscribe()
不是 return 一个 Observable,而是一个订阅对象。这是初学者常见的问题。
Promises
和 Observables
看似相似。在您的代码中使用之前,最好在一定程度上学习它们。
我试图从 Ionic 中的 assets/data/people-data.json 获取数据。在我的 providers/people-data.ts
getLocalData(){
try{
this.http.get('assets/data/people-data.json').map(res => res.json()).subscribe(data => {
return data;
});
}
catch (error) {
console.log("Error in httprequest");
return this.data;
}
return this.data;
}
在我的 search.ts 页面(我需要发布数据的地方) 代码如下
generateData() {
try {
this.peopleData.getLocalData().then((result) =>{
console.log("data recieved")
});
} catch (error) {
console.error("Couldnot fetch data",error);
}
}
这是因为 getLocalData
应该 return 一个 Promise
但它实际上 returning undefined
(或者 this.data
是什么,在getLocalData
的开始)。
以下将正常工作。在这里,getLocalData
return 是一个可观察对象并且 generateData
订阅了它。
getLocalData(){
return this.http.get('assets/data/people-data.json').map(res => res.json())
}
generateData(){
this.peopleData.getLocalData().subscribe(
(result) =>{
console.log("data recieved")
}, (err)=>{
console.log("Error in httprequest");
}
);
}
你的代码有问题:
Observables
和Promises
是用来处理异步代码的两种模式(其他还有:callbacks
、asyn-await
)。
一个Observable
和Promise
,都是JavascriptObject
。两者都像是一个将在稍后时间到达的值的代理。
当值到达时(它称为解析值),如果您从 Observable
中提取解析值,则使用 .subscribe()
,但如果您使用从 Promise
中提取解析值,则使用 .then()
.
你的情况 this.http.get('assets/data/people-data.json')
return 是 Observable
。另外 this.http.get('assets/data/people-data.json').map(res => res.json())
returns 修改 Observable
。但是你试图使用 .then()
来提取它,这是不正确的。
此外,您 returning,observable.map().subscribe()
不是 return 一个 Observable,而是一个订阅对象。这是初学者常见的问题。
Promises
和 Observables
看似相似。在您的代码中使用之前,最好在一定程度上学习它们。