如何将内部 JSON 分配给 promise 中的对象
How to assign inner JSON to object inside promise?
在Angular2"英雄之旅"教程中,展示了如何将JSON分配给承诺中的变量。如果我的 JSON 很复杂怎么办:
杰森:
let complexMessage = [{
"heroes":[
{id: 11, name: 'Mr. Nice'},
{id: 12, name: 'Narco'},
{id: 13, name: 'Bombasto'},
{id: 14, name: 'Celeritas'},
{id: 15, name: 'Magneta'},
{id: 16, name: 'RubberMan'},
{id: 17, name: 'Dynama'},
{id: 18, name: 'Dr IQ'},
{id: 19, name: 'Magma'},
{id: 20, name: 'Tornado'}
]
,"numHeroes": 9
,"messages":[
{message: "aaa", args:[]},
{message: "bbb", args:[]}
]
}];
以下 Typescript 不适用于多维 JSON:
getHeroes(): Promise<Hero[]> {
return this.http.get(this.heroesUrl)
.toPromise()
.then(response => response.json())
.catch(this.handleError);
然后:
getHeroes() {
this.heroService
.getHeroes()
.then(heroes => this.heroes = heroes)
.catch(error => this.error = error);
}
有谁知道如何为这个英雄分配内心的"英雄"?(原始代码在 https://angular.io/docs/ts/latest/tutorial/toh-pt6.html)
如果你只是想从这个json接收英雄,你可以这样做:
getHeroes(): Promise<Hero[]> {
return this.http.get(this.heroesUrl)
.toPromise()
.then(response => response.json()[0].heroes)
.catch(this.handleError);
只需将heroes
数组而不是完全响应分配给this.heroes
,您将获得您想要的任何内容,或者作为替代,只需在 http 调用时发送所需的数组,试试这个-
getHeroes(): Promise<Hero[]> {
return this.http.get(this.heroesUrl)
.toPromise()
.then(response => response.json())
.catch(this.handleError);
getHeroes() {
this.heroService
.getHeroes()
.then(heroes => this.heroes = heroes[0].heroes) // here take first key of array and you will get heroes as return
.catch(error => this.error = error);
}
相关文章:
- Promise没有;t返回对象的数组
- 将数据从promise then方法传递到对象方法
- jQuery Deferred and promise-错误:对象没有't支持属性或方法'然后'
- Angularjs$http删除$q promise导致TypeError:对象不是函数
- 如何测试从promise对象获取数据的控制器
- Angular promise回调不是在构造函数方法内部触发,而是在对象文本方法中触发
- 如何使用promise正确处理express.js中的错误(字符串或对象)
- 正在使用promise对象中止ngResource
- Promise对象带有导致错误的警报和返回值
- 如何让promise对象成功函数中的代码在调用后的代码之前执行
- Angular中Promise对象的回顾
- 什么'这是处理promise对象中错误结果的正确方法
- Angular JS Promise+对象构造函数
- 解析函数对Node.js中的promise对象不起作用
- JavaScript:多个promise对象被链接
- 我应该效仿'.$promise'对象
- vue-resource返回一个promise对象
- 如何从angularjs的$q.defer() promise对象中删除回调?
- 单元测试 - 如何使用 mocha-phantomjs 测试返回 Promise 对象的 JavaScript 方法
- 是否可以向jquery的promise对象添加方法?