@mortyy

Почему не отрабатывает промис в Angular 2?

метод в сервисе:
testpromise():any{
		console.log('json called');
		return new Promise(resolve => {
			this.http.get('assets/list.json').map((response) => {
				resolve(response.json());
			});
		});
	}

Вызов:
ngOnInit() {
		this.assignmentsService.testpromise().then(
			result => {
				alert("Fulfilled: " + result);
			},
			error => {
				alert("Rejected: " + error);
			}
		);

		this.assignments = this.assignmentsService.getAssignments()
			.slice(0, 5)
			.map(x => new AssignmentView(x));
	}
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
@SergeyBugai
У rxjs есть хорошая функция, называется .toPromise() делаете
return this.http.get('assets/list.json').toPromise()

и метод вернят вам промис, и не нужно ни во что оборачивать и извращатся)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Мб проблема в том, что не отрабатывает http, т.к. по коду похоже, что это stream из rxjs. Чтобы он выполнился, надо сделать subscribe к нему вместо map.
Попробуйте
this.http.get('assets/list.json').subscribe(response => resolve(response.json()));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы