Ich möchte die Kommentare von meiner API erhalten. Also sollte die Funktion eine Rückkehr versprechen? Was ist besser? Clasic oder Versprechen zurück?Angular2: Versprechen zurück
Und ich habe immer noch ein Problem, das Versprechen Rückkehr zurück undefined.
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}
];
Und ich bekomme in der Konsole diese:
valoare
Array [Objekt]
undefined
Ist die Frage wirklich, ob es besser ist, ein Versprechen oder einen einfachen Wert zurückzugeben? Sie verwenden eine Zusage nur dann, wenn Sie einen asynchronen Aufruf durchführen müssen (wobei Sie keinen einfachen Wert zurückgeben können), andernfalls wird die Ausführung der Synchronisation immer bevorzugt, außer wenn Sie aus irgendeinem Grund explizit async ausführen möchten. –
Ich habe auf Angular Website dieses Beispiel .. Ich habe nur gefragt, wissen Sie, warum nicht funktioniert? Ich mochte auf angular site .. –
Auf der Angular-Site simulieren sie einen Async-Aufruf zu Demonstrationszwecken über die Async-Ausführung. Dies bedeutet nicht, dass es bevorzugt wird. –