在Angular中的Promise块之外使用变量

时间:2019-09-03 15:23:32

标签: angular typescript promise angular6

如何在Angular 6的组件中的promise块之外获取变量?

例如

    items:string[]=[];

    ngOnInit{

    const url='SOME URL';
    const promise = this.apiService.post(url);

        //Response
        promise.then(response => {
      this.items.push('abc');
      this.items.push('def');
        });

    this.items.forEach(item=>{
     alert(item);
    });

      }

我希望该应用程序对项目数组的内容发出警报

2 个答案:

答案 0 :(得分:2)

完成时

this.items.forEach(item=>{
     alert(item);
    });

items数组为空。

您需要将此代码放入

  promise.then(response => {
          this.items.push('abc');
          this.items.push('def');
         this.items.forEach(item=>{
            alert(item);
           });
     });

或者您可以使用Observables知道诺言何时结束并执行foreach,您需要执行以下操作:

private subjectItems = new Subject<any>();

ngOnInit{

    this.subjectItems.asObservable().subscribe(o => {
        this.items.forEach(item=>{
         alert(item);
        });
      });

    const url='SOME URL';
    const promise = this.apiService.post(url);

        //Response
        promise.then(response => {
           this.items.push('abc');
           this.items.push('def');

           this.subjectItems.next(this.items)
        });
      }

答案 1 :(得分:0)

这似乎是一个异步问题,我的意思是在从服务中获取数据之前就显示了警报,因此可以选择使用.ToList()Observables。它应该等到获取数据后再使用。

此外,您可以尝试在此medium article之后使用subscribe