Javascript 在第8章中,HttpClient请求在承诺内失败,承诺永远无法解决

Javascript 在第8章中,HttpClient请求在承诺内失败,承诺永远无法解决,javascript,angular,tags,observable,angular-promise,Javascript,Angular,Tags,Observable,Angular Promise,我正在使用带有Angular 8的ng select包向消息添加标记。我需要根据用户请求创建新标签。以下是文档示例: addTagPromise(name) { return new Promise((resolve) => { this.loading = true; // Simulate backend call. setTimeout(() => { resolve({ id: 5, name:

我正在使用带有Angular 8的ng select包向消息添加标记。我需要根据用户请求创建新标签。以下是文档示例:

addTagPromise(name) {
    return new Promise((resolve) => {
        this.loading = true;
        // Simulate backend call.
        setTimeout(() => {
            resolve({ id: 5, name: name, valid: true });
            this.loading = false;
        }, 1000);
    })
}

这段代码在一秒钟后添加了一个新标记,并且可以正常工作。但我需要一个真正的服务器端请求。 问题是,当我添加一个HttpClient请求时,它根本不会执行

例如,在此代码中,“get”请求将永远不会执行,承诺也永远不会解决!:

addTagPromise(name) {
    return new Promise(resolve => {
      this.http.get("http://google.com").subscribe(); <--- Will never executed
      this.loading = true;
      // Simulate backend call.
      setTimeout(() => {
        resolve({ id: 5, name: name, valid: true }); <--- Never resolves
        this.loading = false;
      }, 1000);
    });
  }

你为什么把可观察的东西包装成承诺?您可以使用
toPromise
运算符表单RxJs
this.categoryService.add(newLabel).toPromise()
@dev那么我应该在哪里写订阅正文?你能用toPromise重写最后一个代码狙击手吗?为什么你要把Observable包装成Promise?您可以使用
toPromise
运算符表单RxJs
this.categoryService.add(newLabel).toPromise()
@dev那么我应该在哪里写订阅正文?你能用toPromise重写最后一个代码狙击手吗?
addTag(title: string) {
  const newLabel: CategorySet = { type: 'message', title };

  return new Promise((resolve, reject) => {
    this.categoryService.add(newLabel).subscribe(res => {
      if (res.code === 1) {
        // If added, get the list og gategories again
        this.getCategoryList();
        resolve();
      } else {
        this.toastr.error(res.message);
        reject();
      }
    });
}