教程 > Recoil.js > Recoil 手册 阅读:31

waitForAll(dependencies)

waitForAll(dependencies) 一个允许我们并发计算多个异步依赖项的并发 helper 方法。

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

function waitForAll(dependencies: Array<RecoilValue<>>):
  RecoilValueReadOnly<UnwrappedArray>
function waitForAll(dependencies: {[string]: RecoilValue<>}):
  RecoilValueReadOnly<UnwrappedObject>

因为此并发 helper 是作为一个 selector 提供的,所以它可以作为 React 组件中的 Recoil 钩子函数使用,也可以作为 Recoil selector 中的依赖项使用,或者任何使用 Recoil 状态的地方。

示例

function FriendsInfo() {
  const [friendA, friendB] = useRecoilValue(
    waitForAll([friendAState, friendBState])
  );
  return (
    <div>
      Friend A Name: {friendA.name}
      Friend B Name: {friendB.name}
    </div>
  );
}
const friendsInfoQuery = selector({
  key: 'FriendsInfoQuery',
  get: ({get}) => {
    const {friendList} = get(currentUserInfoQuery);
    const friends = get(waitForAll(
      friendList.map(friendID => userInfoQuery(friendID))
    ));
    return friends;
  },
});
const customerInfoQuery = selectorFamily({
  key: 'CustomerInfoQuery',
  get: id => ({get}) => {
    const {info, invoices, payments} = get(waitForAll({
      info: customerInfoQuery(id),
      invoices: invoicesQuery(id),
      payments: paymentsQuery(id),
    }));

    return {
      name: info.name,
      transactions: [
        ...invoices,
        ...payments,
      ],
    };
  },
});

查看笔记

扫码一下
查看教程更方便