如何使用异步数据流(可观察)中的数据进行API调用?

问题描述 投票:0回答:1

我正在编写一个Angular 2书籍搜索应用程序,它通过应用程序的服务与API进行交互。我有一个表单供用户将书籍上传到后端的数据库,提交uploadBook函数运行:

uploadBook(){
    //collects form data and uses it to set the value of this.book

    this._uploadService.uploadBookToDb(this.book)
        .subscribe( res => {
            alert('book uploaded');
        })
  }

upload.service.ts

uploadBookToDb(book){
    return this._http.post(environment.apiUrl + '/book_new', JSON.stringify(book))
        .map(res => res.json());
    }

这工作正常,我从服务器得到正常的响应。但是,当我尝试按用户键入书籍查找时遇到麻烦:

bookTitle.valueChanges
        .debounceTime(1000)
        .map(bookTitle => this._uploadService.bookLookUp(bookTitle))
        .subscribe(res => update dropdown with results);

在服务bookLookup类似于上面的工作uploadBookToDb

bookLookUp(title){
    return this._http.post(environment.apiUrl + '/book_lookup', JSON.stringify(title))
        .map(res => res.json());
  }

但是当我输入书名字段时,会返回observable本身:Observable {_isScalar: false, source: Observable, operator: MapOperator}。服务器上没有记录任何活动,即服务中的API调用甚至根本没有被执行。

我确信我错误地将observable映射到服务但是在处理异常数据请求时如何正确地执行此操作很困惑,例如valueChanges。任何帮助解决这个问题都会非常受欢迎。

angular angular2-observables
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.