跳至主要内容

waitForNone(dependencies)

一个并发辅助函数,它返回一个包含请求的依赖项当前状态的 Loadables 集合。

依赖项可以作为元组数组或作为对象中的命名依赖项提供。


function waitForNone(dependencies: Array<RecoilValue<>>):
RecoilValueReadOnly<UnwrappedArrayOfLoadables>
function waitForNone(dependencies: {[string]: RecoilValue<>}):
RecoilValueReadOnly<UnwrappedObjectOfLoadables>

waitForNone()waitForAll() 类似,但它会立即返回并返回每个依赖项的 Loadable,而不是直接返回值。它与 noWait() 类似,但它允许一次请求多个依赖项。

此辅助函数对于处理部分数据或随着不同数据可用而增量更新 UI 很有用。

增量加载示例

此示例呈现一个具有多层的图表。每一层都有一个可能很昂贵的数据库查询。它将立即使用每个仍在等待的层的微调器呈现图表,并随着该层的数据的到来而更新图表以添加每个新层。如果任何层在查询时出现错误,则只有该层将显示错误消息,其余层将继续呈现。

function MyChart({layerQueries}: {layerQueries: Array<RecoilValue<Layer>>}) {
const layerLoadables = useRecoilValue(waitForNone(layerQueries));

return (
<Chart>
{layerLoadables.map((layerLoadable, i) => {
switch (layerLoadable.state) {
case 'hasValue':
return <Layer key={i} data={layerLoadable.contents} />;
case 'hasError':
return <LayerErrorBadge key={i} error={layerLoadable.contents} />;
case 'loading':
return <LayerWithSpinner key={i} />;
}
})}
</Chart>
);
}