angular - Angular 2 - 承诺链 - 承诺不会被调用
问题描述
我使用解析器并链接承诺,但我调用的服务也返回承诺,我不知道如何在链接中使用它
第二个函数的主体永远不会被调用
public resolve(route: ActivatedRouteSnapshot): Promise<boolean>
{
return this.translationsService.getTrads()
.then(function(response:Response)
{
this.coreService.trads=response.json(); <<<< it gets to forkInnerZoneWithAngularBehavior function and code stops
这就是我的服务功能的实现方式
getTrads() {
if (this.trads) {
return new Promise((resolve, reject) => {
resolve(this.trads);
});
} else {
return this.http.get(.....).toPromise();
}
}
我觉得我做错了,但老实说 rxjs 真的让事情变得复杂
谢谢
解决方案:我简化了代码,“this”未定义,所以我使用 =>
解决方案
您的getTrads
函数返回一个解析为数组或 HTTP 响应的承诺。如果您希望它解析为所需的数组,则必须response.json()
在函数内部执行getTrads
:
getTrads() {
if (this.trads) {
return Promise.resolve(this.trads);
} else {
return this.http.get(...).toPromise()
.then(response => response.json());
}
}
推荐阅读
- python - 在 SQLAlchemy 中使用 Postgres 索引运算符
- flutter - 如何在 Flutter 移动应用项目中使用 testWidgets 测试画布
- identityserver4 - 登录到托管的 Blazor Wasm 应用程序时如何在令牌中附加声明?
- c++ - 尝试使用 memcpy 复制没有最后一个字符的字符串
- javascript - 如何在 vue 中导入外部模块?
- swift - 如何在init中使用观察到的对象值?
- javascript - 如何在javascript中将json的值从字符串转换为对象?
- plotly - 注释因子图而异,情节表达?
- amazon-web-services - lambda 函数仅针对文件名模式的上传触发
- c++ - 无法捕获 ImageMagick Image 构造函数异常