Dva: @ ไบ‘ ่ฐฆ setInterval์„ ์‚ฌ์šฉํ•˜์—ฌ yield call (api, param)์„ ํด๋งํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ตฌ๋ฌธ ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

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

์˜ˆ : setInterval (function () {yield call (api, param)}, 1000)

question

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

const delay = timeout => {
  return new Promise(resolve => {
    setTimeout(resolve, timeout);
  });
};

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

์–ด๋–ป๊ฒŒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํด๋ง ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? yield๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒํƒœ๋ฅผ ์ž‘๋™ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

while (true) {
  yield call(delay, 1000);
  yield call(api, params);
}

์ด์™€ ๊ฐ™์ด ์ง€์—ฐ์„ ์ž‘์„ฑํ•˜๋ฉด undefind๊ฐ€ redux-saga์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ์žˆ๋‹ค๊ณ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด dva๊ฐ€ ์ง€์—ฐ์„ ์–ด๋–ป๊ฒŒ ๋„์ž…ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

const delay = timeout => {
  return new Promise(resolve => {
    setTimeout(resolve, timeout);
  });
};

์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ๋Š” ํ˜„์žฌ dva๋กœ ๋ฆฌํŒฉํ† ๋ง๋˜์—ˆ์œผ๋ฉฐ ์ด์ œ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ˜•์ œ ๋‹˜, ํ˜•์ œ ๋‹˜, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์‹œ๋„ํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. @sorrycc ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ! !

@sorrycc ํŽ˜์ด์ง€์—์ด ํด๋ง์„ ์ข…๋ฃŒํ•˜๋ ค๋Š” ์ž‘์—…์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š”,
saga์˜ ์ดํŽ™ํŠธ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ํŠœํ† ๋ฆฌ์–ผ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ํด๋ง ์ข…๋ฃŒ, ์žฌ์‹คํ–‰ ๋“ฑ๊ณผ ๊ฐ™์€ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ํ”Œ๋ž˜๊ทธ๋กœ ๊ฐ์ง€ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ cancel, fork, takeLatest๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์ œ๋ฅผ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@sorrycc ๋‹ค์‹œ ๋ฌผ์–ด๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.์ด ๊ฒฝ์šฐ ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ ๋  ๋•Œ ๋ฃจํ”„๋ฅผ ์ค‘์ง€ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ๋ฉ๋‹ˆ๊นŒ?

redux-saga์˜ ํฌํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์ƒ์„ฑํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ ์ž‘์—…์„ ์ทจ์†Œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

    * forkInterval(actions, { fork, cancelled, put }) {
      globalInterval = yield fork(function* () {
        try {
          while (true) {
            yield delay(3000);
            yield put({ type: 'youraction'  });
          }
        } finally {
          if (yield cancelled()) {
            // ๅ–ๆถˆไน‹ๅŽ็š„ๆ“ไฝœ๏ผŒ่ฟ™้‡Œไป€ไนˆ้ƒฝไธๅš
          }
        }
      });
    },

    * clearInterval(actions, { cancel }) {
      yield cancel(globalInterval);
    },
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰