efek: {
/**
* 数据查询
*
* <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,
},
});
}
}
},
efek: {
/**
* 数据查询
*
* <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,
},
});
}
}
},
Ya, efek hanya mendukung kata-kata generator. async
dan await
dapat digunakan di luar efek, lalu gunakan panggilan hasil untuk menyesuaikan efek.
Saya mengerti, terima kasih Tuhan
Permisi, apakah efek memiliki kesempatan untuk mendukung async di masa mendatang? @maaf
Async tidak memiliki generator yang dapat dikontrol, seperti cancel
, itulah sebabnya redux-saga memilih untuk menggunakan generator.
Oh
@sorrycc Bagaimana saya bisa membatalkan efek?
@miaojiuchen Apa adegannya? Mengapa membatalkan efek?
@sorrycc saya menemukan skenario ini:
Ini bagus pada satu halaman, tetapi jika Anda mengunjungi halaman lain dan kemudian kembali ke halaman sebelumnya, efek 2 akan diulang.
Bagaimana saya bisa membatalkan efek di efek 1 dan kemudian memicu efek 2?
Apakah saya harus menggunakan jalur berlangganan untuk memanggil @@CANCEL_EFFECTS?
Terima kasih.
@sorrycc Karena Anda juga menyebutkan skenario apa yang perlu digunakan batal di sini, pada kenyataannya, async/menunggu sudah cukup dalam banyak kasus. Dalam penggunaan saat ini, gunakan generator/yield untuk memanggil async/await. Ini terlalu menyakitkan. Penulis dapat mempertimbangkan untuk mendukung kedua mode secara bersamaan dan membiarkan pengguna memilih sendiri, seperti menambahkan item konfigurasi dan memanggil mode async/await setelah pembukaan , Atau penilaian adaptif.
Anda dapat mencoba redva , kerangka kerja
Komentar yang paling membantu
@sorrycc Karena Anda juga menyebutkan skenario apa yang perlu digunakan batal di sini, pada kenyataannya, async/menunggu sudah cukup dalam banyak kasus. Dalam penggunaan saat ini, gunakan generator/yield untuk memanggil async/await. Ini terlalu menyakitkan. Penulis dapat mempertimbangkan untuk mendukung kedua mode secara bersamaan dan membiarkan pengguna memilih sendiri, seperti menambahkan item konfigurasi dan memanggil mode async/await setelah pembukaan , Atau penilaian adaptif.