typescript - 错误:“未捕获(承诺):[object Object]
问题描述
当我尝试将 GET 方法发布到休息 api 时发生错误,但在邮递员中它工作正常。
public cartview() {
let localaccesstoken = localStorage.getItem('token');
let apiUrl = this.urlService.apiUrl+'cart?access_token='+localaccesstoken;
console.log(apiUrl);
return new Promise((resolve, reject) => {
console.log("test : "+apiUrl);
this.http.get(apiUrl)
.subscribe(res => {
console.log("w3cert Url : "+JSON.stringify(res));
console.log(resolve(res));
}, (err) => {
console.log('w3cert : '+reject(err));
});
});
在控制台日志中,它显示了一个 api。我复制了那个 api 并发布在邮递员中,它正在工作,但在应用程序中它显示了这个错误:
错误:“未捕获(承诺中):[object Object]”
解决方案
将您的方法更改为以下内容:
public cartview() {
let localaccesstoken = localStorage.getItem('token');
let apiUrl = this.urlService.apiUrl+'cart?access_token='+localaccesstoken;
console.log(apiUrl);
return this.http.get(apiUrl).pipe(
tap(res => console.log(res))
).toPromise() <--- rxjs wraps the observable in a Promise for you
});
我认为以上内容应该类似于服务方法。因此,然后在您的组件中(或您想要获得承诺的地方)您可以调用 .then() 方法:
...cartview().then(res => console.log(res)).catch(err => console.error(err))
从上面的代码中,我可以看到你不能很好地使用 observables/promise,而且,你正在记录 resolve/reject 方法本身,而不是结果。
推荐阅读
- java - 在单例中使用同步块
- arrays - 特定索引 mongodb 上的数组到数组连接
- azure - Azure Datalake Storage 列出容器中的第一级目录
- javascript - 未在 ui 中呈现的数据在使用 useEffect 做出反应
- javascript - Fetch 数据已加载到 DOM 上,但无法选择
- python - 如何在 Ubuntu 中更新 Docx 文件中的目录
- kubernetes - 如何恢复牧场主集群
- elasticsearch - 如何在Django Elastic query dsl中匹配搜索词中的冒号
- python - 剪刀石头布代码打印结果不一致
- php - Laravel 8 JWT 与登录页面