【问题标题】:Asynchrone respond in TypeScriptTypeScript 中的异步响应
【发布时间】:2018-03-05 12:01:45
【问题描述】:

我正在使用打字稿对服务器进行查询并从中获得响应。

这是我的代码:

allDialogUser(objet): Promise<string> {
    var dialogs;
    this.http.post(this.serverAddress + this.chat + this.alldialoguser, objet)
        .toPromise()
        .then(data => {
            dialogs = data.dialogs;
            return dialogs;
        });
}

async ngOnInit(): Promise<void> {
    this.mesConversations = await this.api.allDialogUser({"id_offre":1, "is_offre":false}); // A MODIFIER
}

我知道 allDialogUser 收到响应,问题是 ngOnInit 似乎没有在等待响应,并且 mesConversations 属性未定义。

【问题讨论】:

  • 这还能编译吗?因为如果我对齐括号 allDialogUser 不会返回任何内容,因为 return dialogs; 包含在箭头函数中。您可能想等待 http.post-promise 的结果以返回您的 then-function 的结果。
  • 你的意思是我应该放 返回对话框; ?我试过了,但它仍然没有等待响应。

标签: typescript promise


【解决方案1】:

allDialogUser 没有返回承诺,因此await 没有任何回报。 您可以简单地返回创建的承诺。

function allDialogUser(objet): Promise<string> {
    return this.http.post(this.serverAddress + this.chat + this.alldialoguser, objet)
        .toPromise()
        .then(data => data.dialogs);
}

async function ngOnInit(): Promise<void> {
    this.mesConversations = await this.api.allDialogUser({"id_offre":1, "is_offre":false});
}

我在 Typescript-Playground 中创建了一个非常简单的概念证明:here

但你很可能会从阅读 Promise 中受益:

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-03
  • 2015-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
相关资源
最近更新 更多