【发布时间】:2020-04-15 18:43:33
【问题描述】:
我创建了一个通用请求服务,但它一直返回“ZoneAwarePromise”。我尝试使用 .pipe() 和 .subscribe() 来尝试检索请求的内容,但它不起作用。
requester.service.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class RequesterService {
constructor(private http: HttpClient) { }
request(method, url, headers, body, params) {
return this.http.request(method, url, {
body: body || {},
headers: headers || {},
params: params || {}
})
}
async get(url, params?, headers?, data?) {
return await this.request('get', url, params, headers, data)
}
async post(url, params, headers, data) {
return await this.request('post', url, params, headers, data);
}
async put(url, params, headers, data) {
return await this.request('put', url, params, headers, data);
}
async delete(url, params, headers, data) {
return await this.request('delete', url, params, headers, data);
}
}
gym-list.component.ts
import { Component, OnInit } from '@angular/core';
import { RequesterService } from 'src/app/core/Requester/requester.service';
@Component({
selector: 'app-gym-list',
templateUrl: './gym-list.component.html',
styleUrls: ['./gym-list.component.css']
})
export class GymListComponent implements OnInit {
constructor(private Requester: RequesterService) { }
ngOnInit() {
console.log(this.teste())
}
async teste() {
await this.Requester.get('https://searchs.glitch.me/proposalcontent')
}
}
【问题讨论】:
-
你试过没有
async和await在你的RequesterService中的逻辑吗?我从来没有使用过那些带有 Observable 的东西,所以我首先想到的是什么可能会导致尝试使用管道和订阅。 -
Requester.get(url, ...)比http.get(url, ...)更容易吗? -
使用 async/await 并没有错,你开玩笑说必须将 observable 转换为 promise,并且 observable 有一个方法可以解决这个问题,请检查 m 答案是否适用于 ????????跨度>
标签: javascript angular typescript promise