0

在下面的代码中,updateQuery由我正在使用的一个 npm 模块提供,所以我不能修改它。我想将一些信息附加到一个对象上,该对象newsMsg将通过updateQuery. 我必须使用承诺来获取该信息。

有没有办法做这样的事情?

subscribe(fromID, toID, updateQuery) {
   this.subscriptionObserver = this.props.client.subscribe({
        query: IM_SUBSCRIPTION_QUERY,
        variables: { fromID: this.fromID, toID: this.toID },
    }).subscribe({
        next(data) {
            const newMsg = data.IMAdded;

            //ATTACH INFO TO newMsg HERE VIA A PROMISE?

             updateQuery((previousResult) => {
             return  update(
                    previousResult,
                    {
                        instant_message: {
                            $push: [newMsg],
                        },
                    }
                );
            });
        },
        error(err) {
            console.error('err', err); },
    });
}
4

1 回答 1

0

因为 Promise 表示将来可能提供的数据,所以此时您可以从函数返回的只是 Promise 本身(而不是数据),因为您还没有数据。

想要数据的调用者然后从返回的数据中获取该承诺并p.then()对其进行操作以访问数据。因此,将 Promise 放入返回的数据结构中,然后调用者可以从那里访问 Promise。

您的另一个选择是仅从您的函数返回一个承诺,并将所有返回的数据作为该承诺的解析值。

于 2017-01-14T23:48:03.773 回答