javascript - Angular2中如何调用多个函数,让它们互相等待

标签 javascript angular typescript

我有 3 个功能和一个按钮。我想按下按钮并不是同时调用 3 个函数,而是一个接一个地调用,因此每个函数都会等待另一个(前一个函数)完成

我有一个 onPost、 onGetnavigate 函数 我想做的是调用一个函数allTogether

allTogether() {

 this.onPost();
 this.onGet();
 this.navigate();

}

这是我的onPost方法,我将当前客户端的数据发送到后端

 onPost () {
    const messageForDb = (JSON.stringify(this.model));
    localStorage.setItem('userKey', messageForDb);
    this._httpService.postJSON(this.model)
      .subscribe(
        data => this.postData = JSON.stringify(data),
        error => alert(error),
      );
  }

这是我的 onGet(),在这里我获取有关我的客户端的信息,因此我可以稍后在第三个函数 navigation()

中使用它
  onGet() {
        this._httpService.getCurrentState(this.model.user_email, this.model.client)
      .subscribe(
       // data => this.getData = JSON.stringify(data),
        data => this.getData = data,
        error => alert(error),
      );
  }

navigation () {
  let  part = json.message.part;
  let  num = json.message.number;
  this.router.navigate(['part'], {queryParams: {'number': 'num'}});
}

我尝试使用订阅,但失败了...那么云我如何实现函数 allTogether() else ?我测试了所有功能,它们单独工作,但一起工作..

最佳答案

您可以使用 Observable.forkJoin 运算符使第三个函数等待前两个函数的结果。我发现它们之间的数据并不相互依赖。您还必须修改 onPostonGet,以便它们返回 observables

onPost () {
    const messageForDb = (JSON.stringify(this.model));
    localStorage.setItem('userKey', messageForDb);
    return this._httpService.postJSON(this.model);
 }

onGet() {
        return this._httpService.getCurrentState(this.model.user_email, this.model.client);
  }

Observable.forkJoin([this.onPost(), this.onGet()])
   .subscribe((resultArray) => {
     [postResult, getResult] = resultArray;
     this.postData = JSON.stringify(postResult);
     this.getData = getResult;
     this.navigation();
   });

关于javascript - Angular2中如何调用多个函数,让它们互相等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45826880/

相关文章:

javascript - TypeScript/JavaScript 中的模块和命名空间有什么区别?

javascript - 使用 bing map api 获取地址(邮政编码)自动地理定位?

javascript - polymer -使用行为在元素之间共享对象?

angular - 响应式(Reactive)表单 typescript CKEDITOR CustomValueModule

authentication - Angular 2 基本身份验证 CORS

javascript - 合并 js 文件时 Typescript Intellisense 不起作用

typescript - 在没有 "any."的 TypeScript 中创建 JSON 接口(interface)

javascript - 在 React 中导航到 map 内的上一项

javascript - Jquery - cookie 将过期日期设置为 1 天

node.js - 由于错误,运行 "npm start"失败 - Angular2