Dva: ํšจ๊ณผ์—์„œ ๋น„๋™๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด async/await๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? */yield๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2016๋…„ 10์›” 09์ผ  ยท  11์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dvajs/dva

ํšจ๊ณผ: {

/**
 * ๆ•ฐๆฎๆŸฅ่ฏข
 * 
 * <strong i="6">@param</strong> {any} { payload }
 * <strong i="7">@param</strong> {any} { select, call, put }
 */
query: async function ({ payload }, { select, call, put }) {
  await put({ type: 'show_loading' });
  payload.page = payload.page || 1;
  payload.limit = payload.limit || 10;
  let data = await call(query, '/home/course', payload);
  if (data) {
    await put({
      type: 'query_success',
      payload: {
        list: data.data,
        total: data.count,
        current: data.currentPage,
      },
    });
  }
}

},

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@sorrycc ์—ฌ๊ธฐ์—์„œ ์ทจ์†Œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋„ ์–ธ๊ธ‰

๋ชจ๋“  11 ๋Œ“๊ธ€

ํšจ๊ณผ: {

/**
 * ๆ•ฐๆฎๆŸฅ่ฏข
 * 
 * <strong i="6">@param</strong> {any} { payload }
 * <strong i="7">@param</strong> {any} { select, call, put }
 */
query: function* ({ payload }, { select, call, put }) {
  yield put({ type: 'show_loading' });
  payload.page = payload.page || 1;
  payload.limit = payload.limit || 10;
  let data = yield call(query, '/home/course', payload);
  if (data) {
    yield put({
      type: 'query_success',
      payload: {
        list: data.data,
        total: data.count,
        current: data.currentPage,
      },
    });
  }
}

},

์˜ˆ, ํšจ๊ณผ๋Š” ์ƒ์„ฑ๊ธฐ์˜ ๋ฌธ๊ตฌ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. async ๋ฐ await ๋Š” ํšจ๊ณผ ์™ธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, yield ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ํšจ๊ณผ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ดํ•ดํ•ฉ๋‹ˆ๋‹ค, ํ•˜๋Š๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

์‹ค๋ก€ํ•ฉ๋‹ˆ๋‹ค. effect๊ฐ€ ๋ฏธ๋ž˜์— ๋น„๋™๊ธฐ๋ฅผ ์ง€์›ํ•  ๊ธฐํšŒ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? @sorrycc

Async์—๋Š” cancel ์™€ ๊ฐ™์ด ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ์„ฑ๊ธฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด redux-saga๊ฐ€ ์ƒ์„ฑ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ์„ ํƒํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

์˜ค

@sorrycc ํšจ๊ณผ๋ฅผ ์ทจ์†Œํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

@miaojiuchen ์žฅ๋ฉด์ด ๋ญ์ฃ ? ํšจ๊ณผ๋ฅผ ์ทจ์†Œํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

@sorrycc ์ด ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ํšจ๊ณผ 1: ์š”์ฒญ์ด ์„ฑ๊ณตํ•˜๊ณ  ์ˆซ์ž๊ฐ€ ๋ฐ˜ํ™˜๋˜๊ณ  ํšจ๊ณผ 2๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๋นผ๊ธฐ ์นด์šดํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  • ํšจ๊ณผ 2: while(true) => ์ง€์—ฐ๋œ ๋‹ค์Œ ๊ฐ์†๊ธฐ๋ฅผ ๋ฐœ์†กํ•ฉ๋‹ˆ๋‹ค.

ํ•œ ํŽ˜์ด์ง€์—์„œ๋Š” ๊ดœ์ฐฎ์ง€๋งŒ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ ์ด์ „ ํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐ€๋ฉด ํšจ๊ณผ 2๊ฐ€ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.
ํšจ๊ณผ 1์˜ ํšจ๊ณผ๋ฅผ ์ทจ์†Œํ•œ ๋‹ค์Œ ํšจ๊ณผ 2๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ?
@@CANCEL_EFFECTS๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๋ฉด ๊ฒฝ๋กœ ์„œ๋ธŒํฌ๋ฆฝ์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜์š”?

๊ฐ์‚ฌ.

@sorrycc ์—ฌ๊ธฐ์—์„œ ์ทจ์†Œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋„ ์–ธ๊ธ‰

redva ๋ฅผ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰