由于在回调函数中不允许使用"yield"语句,那么我该如何在回调函数中使用redux-saga的"put"功能呢?
我想要以下的回调函数:
function onDownloadFileProgress(progress) {
yield put({type: ACTIONS.S_PROGRESS, progress})
}
由于yield在普通函数中不允许,所以出现了"意外令牌"错误。否则我无法将回调函数作为"function *"进行传递,这将允许使用yield。ES6在这里似乎出现了问题。
我读到redux-saga提供了一些名为"channels"的功能,但老实说,我还没有理解它们。我已经多次阅读过有关这些通道的说明和示例代码,但在所有示例中,他们都解决了非常困难和不同的问题,而不是我的简单情况,最后我只是停滞不前。
有人可以告诉我如何处理这个问题吗?
整个上下文:
function onDownloadFileProgress(progress) {
yield put({type: ACTIONS.S_PROGRESS, progress})
}
export function * loadFile(id) {
let url = `media/files/${id}`;
const tempFilename = RNFS.CachesDirectoryPath + '/' + id;
const download = RNFS.downloadFile( {
fromUrl: url,
toFile: tempFilename,
background: false,
progressDivider: 10,
progress: onDownloadFileProgress,
})
yield download.promise;
}