Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取角度测量中的可观测变量之外的变量_Javascript_Arrays_Json_Angular_Observable - Fatal编程技术网

Javascript 如何获取角度测量中的可观测变量之外的变量

Javascript 如何获取角度测量中的可观测变量之外的变量,javascript,arrays,json,angular,observable,Javascript,Arrays,Json,Angular,Observable,我有一个可观测的,有一个数组。我想在可观察对象之外获取该数组,以便将其与另一个数组合并 this.builderService.getCommercialData() .subscribe( data=>{ this.commercialDetails = data; this.commercialDetailsArray.push(this.commercialDetails); console.log(th

我有一个可观测的,有一个数组。我想在可观察对象之外获取该数组,以便将其与另一个数组合并

    this.builderService.getCommercialData()
     .subscribe(
       data=>{
        this.commercialDetails = data;
        this.commercialDetailsArray.push(this.commercialDetails);

       console.log(this.commercialDetailsArray);
       this.newcommercialDetailsArray = 
                             this.commercialDetailsArray[0];
       const arrayLength = this.commercialDetailsArray.length;
         if (arrayLength < 1) {
          this.loaderStatus = false;
          this.dataLoaded = false;
          this.noData = true;
          } else {
            this.loaderStatus = false;
            this.dataLoaded = true;
            this.noData = false;
          }
        },
      error=>{},
     );
this.builderService.getCommercialData()
.订阅(
数据=>{
this.commercialDetails=数据;
this.commercialDetails.ray.push(this.commercialDetails);
console.log(this.commercialDetailsArray);
this.newcommercialDetailsArray=
此.commercialDetailsArray[0];
const arrayLength=this.commercialDetailsArray.length;
if(排列长度<1){
this.loaderStatus=false;
this.dataload=false;
this.noData=true;
}否则{
this.loaderStatus=false;
this.dataload=true;
this.noData=false;
}
},
错误=>{},
);
我想取
newcommercialDetailsArray

您无法使用实际数据访问订阅外部的数组,因为它是 异步回调,您希望以同步方式访问它。你 可以使用以下命令合并订阅中的数组

myArray=[];
this.builderService.getCommercialData()
.订阅(
数据=>{
this.commercialDetails=数据;
this.commercialDetails.ray.push(this.commercialDetails);
this.newcommercialDetailsArray=
此.commercialDetailsArray[0];
//在这里合并;
让myNewArray=
this.newcommercialDetailsArray.concat(this.myArray);
const arrayLength=this.commercialDetailsArray.length;
if(排列长度<1){
this.loaderStatus=false;
this.dataload=false;
this.noData=true;
}否则{
this.loaderStatus=false;
this.dataload=true;
this.noData=false;
}
},
错误=>{},
);
更新

如果您需要运行两个Observable来生成数据,则可能需要查看
Observable.forkJoin()

Fork Join()运算符允许我们获取可观察对象的列表 并并行执行它们。一旦列表中的每个可见项发出 forkJoin的值将发出一个包含 列表中所有可观测值的解析值列表

更多关于例子

我已经用Angular 2完成了

ts文件

 ngOnInit() {

       this._basicService.getBasic().subscribe(
       data => {

           this.basicResponse = data;

           console.log(this.basicResponse);

           return this.basicResponse;

    }
  )
  }
我已从服务中获取数据并将其放入基本应答,然后将数据从订阅函数控制台返回到另一个onclick函数,以检查基本应答是否存在

只需返回值,它对我有效


我不能,因为我有另一个可观测的,它有一个数组要与这个数组合并,由于这个原因,我想把数组取到外面。你应该在问题中提到这一点,更新答案
 ngOnInit() {

       this._basicService.getBasic().subscribe(
       data => {

           this.basicResponse = data;

           console.log(this.basicResponse);

           return this.basicResponse;

    }
  )
  }
 save()
     {
       console.log(this.basicResponse)
    }