Asynchrone在TypeScript中响应

时间:2018-03-02 16:22:41

标签: typescript promise

我正在使用typescript对服务器进行查询并从中获取响应。

这是我的代码:

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属性未定义。

1 个答案:

答案 0 :(得分:0)

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

但你最有可能从阅读承诺中获益: