【问题标题】:what is observable equivalent of $q in angular 4? or empty Array in Observable.forkJoin什么是角度 4 中可观察到的 $q 等价物?或 Observable.forkJoin 中的空数组
【发布时间】:2018-01-30 18:57:41
【问题描述】:

我想创建 observable 并返回它的值。我有将一些文件一一上传到服务器http post方法的功能使用Observable.forkJoin 这是函数

uploadDocument(data): Observable<any> {
let arr = [];
for (var it in data) {
  let input = new FormData();
  input.append("file", data[it].value);
  let files;
  if (data[it].enabled && data[it].value && data[it].value instanceof File) {
    arr.push(this.http.post(environment.apiUrl + 'Upload/File', input))
  }
}
console.log(arr)
if(arr.length==0){
  this.spinner.hide()
}
return Observable.forkJoin(arr);
 }

我想做什么。如果数组为空,我想用空数组或 obj 返回 observable。 这是我的订阅功能

this.commonService.uploadDocument(this.DocsForm.controls)
  .subscribe(
           data=>{console.log(data)},
           error=>{console.log(error)}
    )

这里的数据是返回文件路径obj的数组

【问题讨论】:

  • .of 有什么作用? @JBNizet
  • 我给了你一个文档链接。点击它,然后阅读。
  • 您可以像@JBNizet 所说的那样从对象创建一个 Observable,或者您可以使用 Observable.create(observer => observer) 自己创建一个。当然,还有多种其他方法可以实现您想要的。
  • 我只是想知道.of 能做什么,因为文档太长而且我只是初学者@Ore

标签: angular rxjs observable


【解决方案1】:

forkjoin 得到空数组并且订阅没有被调用,所以我为空数组创建一个案例并像这样返回空的 observable

  if(arr.length==0){
  this.spinner.hide()
  return Observable.of(null);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-01
    • 2021-02-22
    • 2014-08-08
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 2020-05-16
    • 2021-11-02
    相关资源
    最近更新 更多