我有一个获取端点数据的服务:
Service.ts
getAllProducts(){
return new Promise( (resolve, reject) => {
this.apiService.get( this.allProducts, `/products`, {} )
.then( data => resolve( data.map( item => this.parseProductDetails( item ) ) ) )
.catch( err => reject( err ) );
} );
}
console.log(data)
-提供所有产品。一切正常,并且功能this.parseProductDetails还会正常返回所有产品。
但是当我从component调用时:
ionViwDidLoad(){
this.productProvider.getAllProducts()
.then( () => {
items => this.items = items;
console.log('All products', this.items)
} )
.catch( err => console.debug( 'products not found', err ) )
}
console.log('All products', this.items)
-控制台日志中没有返回任何内容,甚至没有未定义或“所有产品”文本。
此代码有什么问题,我需要更改哪些内容才能检索组件中的信息?
parseProductDetails(item):
protected parseProductDetails( data: any ): Object {
let parsed: any = data;
try {
parsed.dimensions = JSON.parse( data.dimensions );
} catch( e ) { parsed.dimensions = []; }
if( data.price )
parsed.priceFormatted = this.formatPrice( data.price, data.currency );
else
parsed.priceFormatted = false;
if( data.delivery )
parsed.deliveryFormatted = this.formatPrice( data.delivery, data.currency );
else
parsed.deliveryFormatted = false;
if( data.stock )
parsed.stockFormatted = this.formatStock( data.stock, data.stockUnit );
else
parsed.stockFormatted = false;
return parsed;
}
返回已解析的数组。
答案 0 :(得分:0)
关于promise的问题然后进行回调:
this.productProvider.getAllProducts()
.then((items) => {
console.log('All products', items)
} )
.catch( err => console.debug( 'products not found', err ) )
.then( () => loading.dismiss() );
答案 1 :(得分:0)
您正在then()
中使用两个箭头功能。您应该删除一个。
ionViwDidLoad(){
this.productProvider.getAllProducts()
.then( (items) => {
this.items = items;
console.log('All products', this.items)
})
.catch( err => console.debug( 'products not found', err ) )
.then( () => loading.dismiss() );
}
答案 2 :(得分:0)
这里似乎出了很多问题。我不知道确切的原因是什么,但是我猜items
参数没有正确放置。试试这个:
getAllProducts() {
return this.apiService.get(this.allProducts, `/products`, {}).then((data) => {
console.log('items', data);
return data.map((item) => this.parseProductDetails(item))
});
}
您打来的电话如下:
ionViwDidLoad(){
this.productProvider.getAllProducts()
.then((items) => {
this.items = items;
console.log('All products', this.items)
})
.catch((err) => console.debug( 'products not found', err ))
.then(() => loading.dismiss());
}