Я хочу получить комментарии от моего API. Итак, функция должна обещать возвращение? Что лучше? Clasic или обещание вернуться?Angular2: Promise return
И у меня все еще есть проблема, возврат обещания не определен.
comments.component.ts
import { Component, OnInit } from '@angular/core';
import { CommentService } from '../services/comment.service';
import { Comment } from '../class/Comment';
@Component({
template: 'dadada',
providers: [CommentService]
})
export class CommentsComponent implements OnInit {
coms: Comment[];
constructor(private commentService: CommentService) {
}
ngOnInit() {
console.log(this.commentService.testfunction());
this.commentService.get_all_comments().then((data) => {
this.coms = data;
});
console.log (this.commentService.get_all_comments2());
console.log (this.coms);
}
}
comment.service.ts
import { Injectable } from '@angular/core';
import { Comment, Comments } from '../class/Comment';
@Injectable()
export class CommentService {
testfunction() {
return 'valoare';
}
get_all_comments() {
return Promise.resolve(Comments);
}
get_all_comments2() {
return Comments;
}
}
Comment.ts
export class Comment {
id: number;
text: string;
author: string;
created_at: number;
updated_at: number;
}
export const Comments: Comment[] = [
{id: 1, text: 'Look I am a test comment.', author: 'Chris Sevilleja', created_at: 0, updated_at: 0}
];
И я получаю в консоли этих:
valoare
Array [Object]
неопределенными
Вопрос, действительно ли лучше вернуть обещание или простое значение? Вы используете обещание только в том случае, если вам нужно сделать асинхронный вызов (где вы не можете вернуть простое значение), в противном случае выполнение синхронизации всегда будет предпочтительным, за исключением случаев, когда вы явно хотите выполнить что-то async по любой причине. –
Я видел на Угловом сайте этот пример .. Я просто спросил, вы знаете, почему не работает? Мне понравилось на угловом сайте. –
На угловом сайте они имитируют асинхронный вызов для демонстрационных целей о том, как справиться с асинхронным выполнением. Это не означает, что это предпочтительнее. –