使用异步变量获取另一个异步变量

时间:2018-07-30 14:26:06

标签: angular asynchronous ngfor

在诺言中使用另一个异步值(message.sender之后,我试图获得一个诺言,以在我的HTML模板中进行异步解析。

message.sender对*ngFor循环中的每条消息进行更改。函数getSenderUsername(senderUid)似乎已收到message.sender,但在模板中,{{ (databaseService.getSenderUsername(message.sender) | async) }}从未解析为任何值。如何解决?

消息在 inbox.component.ts 中定义如下:

messages = this.databaseService.getMessages();

在模板( inbox.component.html )中:

<tr style="background-color: white;" *ngFor="let message of messages | async as messages; index as i">
    <td>
        {{ (databaseService.getSenderUsername(message.sender) | async) }}
    </td>
</tr>

database.service.ts 中:

getMessages() {
    return new Promise(function (resolve) {
        return firebase.auth().onAuthStateChanged(function (user) {
            if (user) {
                resolve(user.uid);
            }
        });
    }).then((result) => {
        return firebase.database().ref('/mailboxes/' + result).once('value').then((snapshot) => {
            return snapshot.val();
        });
    });
}

getSenderUsername(senderUid) {
    return firebase.database().ref('/accounts/' + senderUid + '/username').once("value").then((snapshot) => {
        return snapshot.val();
    });
}

我希望所有这些都有意义。

0 个答案:

没有答案