当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript effects.actionChannel函数代码示例

本文整理汇总了TypeScript中redux-saga/effects.actionChannel函数的典型用法代码示例。如果您正苦于以下问题:TypeScript actionChannel函数的具体用法?TypeScript actionChannel怎么用?TypeScript actionChannel使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了actionChannel函数的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。

示例1: watchCreateAndRemoveLastPosition

// use channel to make sure every create/remove run one by one
function* watchCreateAndRemoveLastPosition(): SagaIterator {
  try {
    const createLastPositionChan: TakeableChannel<{}> = yield actionChannel(
      getType(lastPositionsCreator.createLastPosition)
    )
    const removeLastPositionChan: TakeableChannel<{}> = yield actionChannel(
      getType(lastPositionsCreator.removeLastPosition)
    )
    while (true) {
      const [createLastPositionAction, removeLastPositionAction]: [
        ReturnType<typeof lastPositionsCreator.createLastPosition> | void,
        ReturnType<typeof lastPositionsCreator.removeLastPosition> | void
      ] = yield race([take(createLastPositionChan), take(removeLastPositionChan)])

      if (createLastPositionAction) {
        yield call(createLastPosition, createLastPositionAction)
      }

      if (removeLastPositionAction) {
        yield call(removeLastPosition, removeLastPositionAction)
      }
    }
  } catch (err) {
    console.error(err)
  }
}
开发者ID:foray1010,项目名称:Popup-my-Bookmarks,代码行数:27,代码来源:saga.ts

示例2: sync

function* sync() {
    const channel = yield actionChannel(SyncType);

    while (true) {
        const { syncItem } = yield take(channel);
        yield call(handleRequest, syncItem);
    }
}
开发者ID:winken168,项目名称:Hitchhiker,代码行数:8,代码来源:index.ts

示例3: addBotHelper

function* addBotHelper() {
  const reqChannel = yield actionChannel(A.ReqAddBot)

  try {
    while (true) {
      yield take(reqChannel)
      const { game, stages }: State = yield select()
      if (!game.remainingBots.isEmpty()) {
        let spawnPos: Point = yield select(selectors.availableSpawnPosition)
        while (spawnPos == null) {
          yield Timing.delay(200)
          spawnPos = yield select(selectors.availableSpawnPosition)
        }
        yield put(actions.removeFirstRemainingBot())
        const level = game.remainingBots.first()
        const hp = level === 'armor' ? 4 : 1
        const tank = new TankRecord({
          tankId: getNextId('tank'),
          x: spawnPos.x,
          y: spawnPos.y,
          side: 'bot',
          level,
          hp,
          withPowerUp: TANK_INDEX_THAT_WITH_POWER_UP.includes(20 - game.remainingBots.count()),
          frozenTimeout: game.botFrozenTimeout,
        })
        const difficulty = stages.find(s => s.name === game.currentStageName).difficulty
        const spawnSpeed = AI_SPAWN_SPEED_MAP[difficulty]
        yield put(actions.setIsSpawningBotTank(true))
        yield spawnTank(tank, spawnSpeed)
        yield put(actions.setIsSpawningBotTank(false))
        yield fork(botSaga, tank.tankId)
      }
    }
  } finally {
    yield put(actions.setIsSpawningBotTank(false))
    reqChannel.close()
  }
}
开发者ID:socoolxin,项目名称:battle-city,代码行数:39,代码来源:botMasterSaga.ts

示例4: testActionChannel

function* testActionChannel(): SagaIterator {
  // typings:expect-error
  yield actionChannel();

  /* action type */

  yield actionChannel('my-action');
  yield actionChannel('my-action', actionBuffer);
  // typings:expect-error
  yield actionChannel('my-action', nonActionBuffer);

  /* action predicate */

  yield actionChannel(
    (action: Action) => action.type === 'my-action',
  );
  yield actionChannel(
    (action: Action) => action.type === 'my-action',
    actionBuffer,
  );
  // typings:expect-error
  yield actionChannel(
    (action: Action) => action.type === 'my-action',
    nonActionBuffer,
  );
  // typings:expect-error
  yield actionChannel(
    (item: {someField: string}) => item.someField === '--',
    actionBuffer
  );

  // typings:expect-error
  yield actionChannel(() => {});
  // typings:expect-error
  yield actionChannel(() => {}, actionBuffer);

  /* stringable action creator */

  yield actionChannel(stringableActionCreator);

  yield actionChannel(stringableActionCreator, buffers.fixed<MyAction>());
  // typings:expect-error
  yield actionChannel(stringableActionCreator, nonActionBuffer);


  /* array */

  yield actionChannel([
    'my-action',
    (action: Action) => action.type === 'my-action',
    stringableActionCreator,
  ]);

  // typings:expect-error
  yield actionChannel([() => {}]);
}
开发者ID:javarouka,项目名称:redux-saga,代码行数:56,代码来源:effects.ts


注:本文中的redux-saga/effects.actionChannel函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。