gpt4 book ai didi

typescript - 如何在 TypeScript 中等待 Http 应答 - Angular 5

转载 作者:搜寻专家 更新时间:2023-10-30 21:06:35 25 4
gpt4 key购买 nike

我想创建一个从服务器返回 token 的函数,但是 http.post() 在我的函数返回 token 后得到响应。

我如何在返回 token 之前等待 http.post()

我的代码:

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';

@Injectable()

export class ServerConnectionService{
constructor( private http : Http) { }
token : string;
Login(Password : string, Username : string, ServerRootURL : string) : string
{
let url = ServerRootURL + "api/AdminApp/RegisterToken";
this.http.post(url, { "Username": Username, "Password": Password }).toPromise()
.then(res => this.token = res.json())
.catch(msg => console.log('Error: ' + msg.status + ' ' + msg.statusText))
return this.token;
}
}

提前谢谢你。

最佳答案

实际上你不能等待异步代码并从中返回一些东西。当你使用 promise 时,你需要使用 thenable 函数并编写与结果相关的其余逻辑它在 then 中起作用。在你的情况下它将是

Login(Password : string, Username : string, ServerRootURL : string): Promise<string>  {
let url = ServerRootURL + "api/AdminApp/RegisterToken";
return this.http.post(url, { "Username": Username, "Password": Password }).toPromise()
.then(res => this.token = res.json())
.catch(msg => console.log('Error: ' + msg.status + ' ' + msg.statusText))
}

你需要像这样使用它

Login('password', 'username', 'http://localhost:8081').then(token => your logic here)

关于typescript - 如何在 TypeScript 中等待 Http 应答 - Angular 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49435449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com