Chain 两个请求和 return 一个对象 Angular 7
Chain Two request and return an object Angular 7
我有一个搜索与用户输入搜索匹配的通知的请求,但每个匹配的通知都有一个 newsId 属性,我想当我从服务器收到通知时,再次请求从中搜索新闻对象newsId 属性和在 return 之后的一个带有通知 obj 和新闻 obj
的对象
import { Notification } from './notification';
import { New } from './new';
export class NotificationEditResponse {
notification:Notification;
newsBelong?:New;
error?:any;
}
export class EditNotificationsResolverService implements Resolve <NotificationEditResponse> {
constructor(private notificationService:NotificationsService) { }
return this.notificationService.getNotificationById(+id)
.pipe(
flatMap(notificationObj=>{
return this.newsService.getNewById(notificationObj.newsId)
.pipe(
map((res:New)=>({
notification:notificationObj,
newsBelong:res
})),
catchError(error=>{
const msg=`Retrieval error : ${error}`;
console.log(msg);
return of({notification:null, error:msg,newsBelong:null});
})
)
})
);
}
}
最好使用 concatMap
而不是 flatMap
因为根据您的用例 this.newsService.getNewById
应该等待 this.notificationService.getNotificationById
发出一个值。
我有一个搜索与用户输入搜索匹配的通知的请求,但每个匹配的通知都有一个 newsId 属性,我想当我从服务器收到通知时,再次请求从中搜索新闻对象newsId 属性和在 return 之后的一个带有通知 obj 和新闻 obj
的对象import { Notification } from './notification';
import { New } from './new';
export class NotificationEditResponse {
notification:Notification;
newsBelong?:New;
error?:any;
}
export class EditNotificationsResolverService implements Resolve <NotificationEditResponse> {
constructor(private notificationService:NotificationsService) { }
return this.notificationService.getNotificationById(+id)
.pipe(
flatMap(notificationObj=>{
return this.newsService.getNewById(notificationObj.newsId)
.pipe(
map((res:New)=>({
notification:notificationObj,
newsBelong:res
})),
catchError(error=>{
const msg=`Retrieval error : ${error}`;
console.log(msg);
return of({notification:null, error:msg,newsBelong:null});
})
)
})
);
}
}
最好使用 concatMap
而不是 flatMap
因为根据您的用例 this.newsService.getNewById
应该等待 this.notificationService.getNotificationById
发出一个值。