当我开始下载任务时,它会有一个重复调用的回调函数。但它会很慢,触摸按钮时无法提供反馈。
Fileio.downloadFile(downloadData[downloadFileIndex].uri, '1.jpg',this.progressFunc.bind(this)).then((DownloadResult)=> {
if (DownloadResult.statusCode == 200) {
let nextDownloadFileIndex = this.props.downloadFileIndex + 1;
this.props.dispatch(DOWNLOADED_A_FILE({
downloadFileIndex:nextDownloadFileIndex,
progressNum:0
}))
}
}).catch((error)=> {
console.log(error)
})
这是我的代码,回调函数也是如此
progressFunc(DownloadBeginCallbackResult) {
let progressNum = DownloadBeginCallbackResult.bytesWritten / DownloadBeginCallbackResult.contentLength;
if(progressNum<=0.99){
this.props.dispatch(DOWNLOADING_A_FILE({
progressNum:progressNum,
jobId:this.props.jobId
}));
}else{
this.props.dispatch(DOWNLOADING_A_FILE({
progressNum:0,
jobId:this.props.jobId
}));
}
}
我的意思是当我触摸按钮时我无法立即获得反馈。我认为这是因为我有一个反复调用的回调函数。所以js无法处理这么多任务;
答案 0 :(得分:1)
听起来好像JS线程忙着做请求而无法与UI线程进行通信。你可以尝试的一件事就是把你包裹在InteractionManager.runAfterInteractions(() => ...)
的新闻处理程序中
见https://facebook.github.io/react-native/docs/interactionmanager.html