ํจ๊ณผ: {
/**
* ๆฐๆฎๆฅ่ฏข
*
* <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,
},
});
}
}
},
ํจ๊ณผ: {
/**
* ๆฐๆฎๆฅ่ฏข
*
* <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 ์ด ์๋๋ฆฌ์ค๊ฐ ๋ฐ์ํ์ต๋๋ค.
ํ ํ์ด์ง์์๋ ๊ด์ฐฎ์ง๋ง ๋ค๋ฅธ ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ์ด์ ํ์ด์ง๋ก ๋์๊ฐ๋ฉด ํจ๊ณผ 2๊ฐ ๋ฐ๋ณต๋ฉ๋๋ค.
ํจ๊ณผ 1์ ํจ๊ณผ๋ฅผ ์ทจ์ํ ๋ค์ ํจ๊ณผ 2๋ฅผ ์คํํ๋ ค๋ฉด ์ด๋ป๊ฒ ํฉ๋๊น?
@@CANCEL_EFFECTS๋ฅผ ํธ์ถํ๋ ค๋ฉด ๊ฒฝ๋ก ์๋ธํฌ๋ฆฝ์
์ ์ฌ์ฉํด์ผ ํ๋์?
๊ฐ์ฌ.
@sorrycc ์ฌ๊ธฐ์์ ์ทจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์๋๋ฆฌ์ค๋ ์ธ๊ธ
redva ๋ฅผ ์๋ํ ์ ์์ต๋๋ค. ๋์ผํ
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@sorrycc ์ฌ๊ธฐ์์ ์ทจ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์๋๋ฆฌ์ค๋ ์ธ๊ธ