在Angular 2中,可以通过使用Promise或Observable来解决函数完成前返回值的问题。下面是一个示例代码:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class DataService {
constructor(private http: Http) {}
getData(): Observable {
return this.http.get('https://jsonplaceholder.typicode.com/posts')
.map(response => response.json());
}
}
在上面的代码中,getData()
函数返回一个Observable对象,该对象会在http请求完成并取得响应后发送数据给订阅方。
另一个常用的解决方法是使用async/await语法。下面是一个示例代码:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
@Injectable()
export class DataService {
constructor(private http: Http) {}
async getData(): Promise {
const response = await this.http.get('https://jsonplaceholder.typicode.com/posts').toPromise();
return response.json();
}
}
在这个示例代码中,getData()
函数返回一个Promise对象,该对象在http请求完成并取得响应后返回数据给调用方。这里使用了ES2017的async/await语法,该语法可以使异步代码看起来像同步代码,更加易读。
上一篇:Angular2组件数据丢失