我想一起执行两个语句,但不是异步执行。有没有办法在angular2中function 1
之前先执行function 2
?
答案 0 :(得分:1)
我们可能需要更多信息,但是假设您有2个http调用,并且您希望将它们设置为“同步”(首先是一个,然后是第二个)。 我建议使用ReactiveX JavaScript,您可以通过以下方式导入:
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/mergeMap';
使用mergeMap运算符,您可以将第一个结果作为输入启动“第二个任务”(新observable)。
因此,例如,我需要在更新用户配置文件之前检查地址。我有2个http电话;一个用于地址检查,另一个用于更新用户配置文件,所以我会这样做:
this.http.get(geolocationGoogleUrl, this._customAddress)
.mergeMap((location: any)=>{ // First http response
console.log(location);
// Do your stuff before second call
return this.http.patch(patchUrl, localAddress); // Use frist http response as input
}).subscribe((updatedUser)=>{ // Second http response
this._user = updatedUser;
});
正如您所注意到的,您需要订阅一个observable才能触发调用。