Javascript 如何在返回承诺的Http请求内部进行链映射或链过滤
我从一个带有lodash的json数组中拒绝了一些数据。我需要拒绝多个不需要的键值 我想我可以链式映射并再次使用reject函数,也可以为reject方法编写一个谓词函数 我想我可能是想得太多了,有人能帮我解决这个问题吗?我需要切换到一个可观察的模式才能工作吗 我希望能够拒绝啤酒、白酒、葡萄酒等。数据也是嵌套的 下面是一个示例JSON对象 这是我的服务Javascript 如何在返回承诺的Http请求内部进行链映射或链过滤,javascript,json,angular,lodash,Javascript,Json,Angular,Lodash,我从一个带有lodash的json数组中拒绝了一些数据。我需要拒绝多个不需要的键值 我想我可以链式映射并再次使用reject函数,也可以为reject方法编写一个谓词函数 我想我可能是想得太多了,有人能帮我解决这个问题吗?我需要切换到一个可观察的模式才能工作吗 我希望能够拒绝啤酒、白酒、葡萄酒等。数据也是嵌套的 下面是一个示例JSON对象 这是我的服务 getMenuByLocationID(locationID) { return this._http.get('/api/locations
getMenuByLocationID(locationID) {
return this._http.get('/api/locations/menu', {params: {locationID: locationID}})
.map((response: Response) =>
_.reject(response.json(), {
_embedded: {
menu_categories: [ {
name: 'BEER'
} ]
}
}))
.toPromise()
.catch(this.handleError);
}我不认为
。
可以处理其匹配条件中的多个值。因此,您可以对每个被拒绝的值(啤酒、葡萄酒等)多次使用\拒绝,但这可能不是最佳解决方案
相反,您可以使用一个自定义谓词函数来使用\uuu.reject
,该函数一次测试所有值。但是你必须编写这个测试,我不认为lodash提供了一个内置的解决方案。但我可能错了
诸如此类
gettMenuByLocationID (locationID) {
return this._http.get('/api/locations/menu', {params: {locationID: locationID}})
.map((response: Response) => {
let data = _.reject(response.json(), {_embedded: {menu_categories: [{name: 'BEER'}]}})
data = _.reject(data, {_embedded: {menu_categories: [{name: 'WINE'}]}})
return _.reject(data, {_embedded: {menu_categories: [{name: 'WHATEVER'}]}})
})
.toPromise()
.catch(this.handleError)
}
您使用的是Http
服务还是新的HttpClient
服务?从@angular/Http导入{Http}预期结果是什么?如果调用getMenuByLocationID(someId)。然后((expectedData)=>…)
,则expectedData
的预期值是多少?预期结果将是所有不是啤酒、葡萄酒、白酒的项目。现在我只得到了所有不是啤酒的东西,这就是我的要求。如何在如上所示的返回承诺中多次使用它。@GarrettSanderson我添加了一些代码。这样,您可以根据响应的类别筛选出越来越多的响应。