efeitos: {
/**
* 数据查询
*
* <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,
},
});
}
}
},
efeitos: {
/**
* 数据查询
*
* <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,
},
});
}
}
},
Sim, o efeito suporta apenas o texto do gerador. async
e await
podem ser usados fora do efeito e, em seguida, use a chamada de rendimento para ajustar o efeito.
Eu entendo obrigado deus
Com licença, o efeito terá uma chance de oferecer suporte ao assíncrono no futuro? @sorrycc
Async não tem gerador controlável, como cancel
, razão pela qual redux-saga escolheu usar gerador.
Oh
@sorrycc Como posso cancelar um efeito?
@miaojiuchen Qual é a cena? Por que cancelar o efeito?
@sorrycc Encontrei este cenário:
Isso é bom em uma página, mas se você visitar outras páginas e depois retornar à página anterior, o efeito 2 será repetido.
Como posso cancelar o efeito no efeito 1 e, em seguida, acionar o efeito 2?
Devo usar inscrições de caminho para chamar @@ CANCEL_EFFECTS?
obrigado.
@sorrycc Como você também mencionou quais cenários precisam ser cancelados aqui, na verdade, async / await é suficiente na maioria dos casos. No uso atual, use gerador / rendimento para chamar assíncrono / esperar. Isso é muito doloroso. O autor pode considerar o suporte de ambos os modos ao mesmo tempo e permitir que os usuários escolham por si mesmos, como adicionar um item de configuração e chamar o modo assíncrono / esperar após a abertura, Ou julgamento adaptativo.
Você pode tentar redva , o mesmo framework
Comentários muito úteis
@sorrycc Como você também mencionou quais cenários precisam ser cancelados aqui, na verdade, async / await é suficiente na maioria dos casos. No uso atual, use gerador / rendimento para chamar assíncrono / esperar. Isso é muito doloroso. O autor pode considerar o suporte de ambos os modos ao mesmo tempo e permitir que os usuários escolham por si mesmos, como adicionar um item de configuração e chamar o modo assíncrono / esperar após a abertura, Ou julgamento adaptativo.