在一个函数中承诺 Returns 一个数组?
Promise within a Function that Returns an Array?
在下面的代码中,updateQuery
是我使用的npm模块提供的,所以我无法修改它。我想将一些信息附加到将通过 updateQuery
返回的对象 newsMsg
。我必须使用承诺来获取该信息。
有没有办法做这样的事情?
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); },
});
}
因为 promise 表示将来可能提供的数据,所以此时您可以从您的函数 return 得到 promise 本身(而不是数据),因为您还没有数据.
想要数据的调用者,然后从 returned 数据中得到承诺,并对其执行 p.then()
以获得对数据的访问。因此,将承诺放入您的 returned 数据结构中,然后调用者可以从那里访问承诺。
您的另一个选择是仅 return 来自函数的承诺,并让所有 returned 数据成为该承诺的解析值。
在下面的代码中,updateQuery
是我使用的npm模块提供的,所以我无法修改它。我想将一些信息附加到将通过 updateQuery
返回的对象 newsMsg
。我必须使用承诺来获取该信息。
有没有办法做这样的事情?
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); },
});
}
因为 promise 表示将来可能提供的数据,所以此时您可以从您的函数 return 得到 promise 本身(而不是数据),因为您还没有数据.
想要数据的调用者,然后从 returned 数据中得到承诺,并对其执行 p.then()
以获得对数据的访问。因此,将承诺放入您的 returned 数据结构中,然后调用者可以从那里访问承诺。
您的另一个选择是仅 return 来自函数的承诺,并让所有 returned 数据成为该承诺的解析值。