• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

TypeScript effects.actionChannel函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了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;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
TypeScript effects.all函数代码示例发布时间:2022-05-25
下一篇:
TypeScript redux-saga-test-plan-ts.expectSaga函数代码示例发布时间:2022-05-25
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap